@regle/core 1.2.0-beta.8 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1083,6 +1083,78 @@ IsNever$1<T> extends false
1083
1083
  ? [...UnionToTuple$1<Exclude<T, L>>, L]
1084
1084
  : [];
1085
1085
 
1086
+ /**
1087
+ Returns a boolean for whether the given type is `null`.
1088
+
1089
+ @example
1090
+ ```
1091
+ import type {IsNull} from 'type-fest';
1092
+
1093
+ type NonNullFallback<T, Fallback> = IsNull<T> extends true ? Fallback : T;
1094
+
1095
+ type Example1 = NonNullFallback<null, string>;
1096
+ //=> string
1097
+
1098
+ type Example2 = NonNullFallback<number, string>;
1099
+ //=? number
1100
+ ```
1101
+
1102
+ @category Type Guard
1103
+ @category Utilities
1104
+ */
1105
+ type IsNull<T> = [T] extends [null] ? true : false;
1106
+
1107
+ /**
1108
+ Returns a boolean for whether the given type is `unknown`.
1109
+
1110
+ @link https://github.com/dsherret/conditional-type-checks/pull/16
1111
+
1112
+ Useful in type utilities, such as when dealing with unknown data from API calls.
1113
+
1114
+ @example
1115
+ ```
1116
+ import type {IsUnknown} from 'type-fest';
1117
+
1118
+ // https://github.com/pajecawav/tiny-global-store/blob/master/src/index.ts
1119
+ type Action<TState, TPayload = void> =
1120
+ IsUnknown<TPayload> extends true
1121
+ ? (state: TState) => TState,
1122
+ : (state: TState, payload: TPayload) => TState;
1123
+
1124
+ class Store<TState> {
1125
+ constructor(private state: TState) {}
1126
+
1127
+ execute<TPayload = void>(action: Action<TState, TPayload>, payload?: TPayload): TState {
1128
+ this.state = action(this.state, payload);
1129
+ return this.state;
1130
+ }
1131
+
1132
+ // ... other methods
1133
+ }
1134
+
1135
+ const store = new Store({value: 1});
1136
+ declare const someExternalData: unknown;
1137
+
1138
+ store.execute(state => ({value: state.value + 1}));
1139
+ //=> `TPayload` is `void`
1140
+
1141
+ store.execute((state, payload) => ({value: state.value + payload}), 5);
1142
+ //=> `TPayload` is `5`
1143
+
1144
+ store.execute((state, payload) => ({value: state.value + payload}), someExternalData);
1145
+ //=> Errors: `action` is `(state: TState) => TState`
1146
+ ```
1147
+
1148
+ @category Utilities
1149
+ */
1150
+ type IsUnknown$1<T> = (
1151
+ unknown extends T // `T` can be `unknown` or `any`
1152
+ ? IsNull<T> extends false // `any` can be `null`, but `unknown` can't be
1153
+ ? true
1154
+ : false
1155
+ : false
1156
+ );
1157
+
1086
1158
  interface RegleBehaviourOptions {
1087
1159
  /**
1088
1160
  * Only display error when calling `r$.$validate()`
@@ -1136,6 +1208,16 @@ type FieldRegleBehaviourOptions = AddDollarToOptions<RegleBehaviourOptions> & {
1136
1208
  */
1137
1209
  $debounce?: number;
1138
1210
  };
1211
+ type CollectionRegleBehaviourOptions = FieldRegleBehaviourOptions & {
1212
+ /**
1213
+ * Allow deep compare of array children to compute the `$edited` property
1214
+ *
1215
+ * Disabled by default for performance
1216
+ *
1217
+ * @default false
1218
+ * */
1219
+ $deepCompare?: boolean;
1220
+ };
1139
1221
  type ResolvedRegleBehaviourOptions = DeepMaybeRef<RequiredDeep<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Record<string, any>, Record<string, any>, Record<string, any[]>>;
1140
1222
  type ShortcutCommonFn<T extends Record<string, any>> = {
1141
1223
  [x: string]: (element: OmitByType<T, Function>) => unknown;
@@ -1209,10 +1291,10 @@ type PartialFormState<TState extends Record<string, any>> = [unknown] extends [T
1209
1291
  }>;
1210
1292
  type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any>> = {
1211
1293
  valid: false;
1212
- data: NonNullable<Data> extends Date | File ? MaybeOutput<Data> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : MaybeOutput<Data>;
1294
+ data: IsUnknown$1<Data> extends true ? unknown : NonNullable<Data> extends Date | File ? MaybeOutput<Data> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : MaybeOutput<Data>;
1213
1295
  } | {
1214
1296
  valid: true;
1215
- data: Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules>;
1297
+ data: IsUnknown$1<Data> extends true ? unknown : Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules>;
1216
1298
  };
1217
1299
  /**
1218
1300
  * Infer safe output from any `r$` instance
@@ -1808,7 +1890,7 @@ declare function flatErrors(errors: $InternalRegleErrors, options?: {
1808
1890
  includePath?: false;
1809
1891
  }): string[];
1810
1892
 
1811
- type InferRegleRoot<T extends (...args: any[]) => Regle<any, any, any, any>> = T extends (...args: any[]) => infer U ? U extends Regle<any, any, any, any> ? Prettify<U['r$']> : never : never;
1893
+ type InferRegleRoot<T extends (...args: any[]) => SuperCompatibleRegle> = T extends (...args: any[]) => infer U ? U extends SuperCompatibleRegle ? U['r$'] : never : never;
1812
1894
  type InferRegleRules<T extends useRegleFn<any, any>> = T extends useRegleFn<infer U, any> ? UnwrapRuleTree<Partial<U> & Partial<DefaultValidators>> : {};
1813
1895
  type InferRegleShortcuts<T extends useRegleFn<any, any>> = T extends useRegleFn<any, infer U> ? U : {};
1814
1896
  type RegleEnforceRequiredRules<TRules extends keyof DefaultValidators> = Omit<Partial<DefaultValidatorsTree>, TRules> & {
@@ -1855,7 +1937,7 @@ type NormalizeUnion<TUnion> = RetrieveUnionUnknownValues<NonNullable<UnionToTupl
1855
1937
  /**
1856
1938
  * Combine all members of a union type, merging types for each key, and keeping loose types
1857
1939
  */
1858
- type JoinDiscriminatedUnions<TUnion extends unknown> = isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection$1<RemoveCommonKey<UnionToTuple$1<TUnion>, keyof NormalizeUnion<TUnion>>[number]>> & Pick<NormalizeUnion<TUnion>, keyof NormalizeUnion<TUnion>>> : TUnion;
1940
+ type JoinDiscriminatedUnions<TUnion extends unknown> = isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection$1<RemoveCommonKey<UnionToTuple$1<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>[number]>> & Pick<NormalizeUnion<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>> : TUnion;
1859
1941
  type LazyJoinDiscriminatedUnions<TUnion extends unknown> = isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection$1<RemoveCommonKey<UnionToTuple$1<TUnion>, keyof NonNullable<TUnion>>[number]>> & Pick<NonNullable<TUnion>, keyof NonNullable<TUnion>>> : TUnion;
1860
1942
  type EnumLike = {
1861
1943
  [k: string]: string | number;
@@ -2000,11 +2082,11 @@ type RegleRuleRawInput<TValue extends any = any, TParams extends [...any[]] = [.
2000
2082
  type InferRegleRule<TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetaData extends RegleRuleMetadataDefinition = boolean> = [TParams] extends [[]] ? RegleRuleDefinition<TValue, TParams, TAsync, TMetaData> : RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetaData>;
2001
2083
  type RegleRuleDefinitionProcessor<TValue extends any = any, TParams extends any[] = [], TReturn = any> = (value: Maybe<TValue>, ...params: TParams) => TReturn;
2002
2084
  type RegleRuleDefinitionWithMetadataProcessor<TValue extends any, TMetadata extends RegleRuleMetadataConsumer<TValue, any[]>, TReturn = any> = ((metadata: TMetadata) => TReturn) | TReturn;
2003
- type RegleCollectionRuleDefinition<TValue = any[], TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = (RegleRuleDecl<NonNullable<TValue>, TCustomRules> & {
2085
+ type RegleCollectionRuleDefinition<TValue = any[], TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = (RegleRuleDecl<NonNullable<TValue>, TCustomRules, CollectionRegleBehaviourOptions> & {
2004
2086
  $each: MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue>>, TCustomRules>, ArrayElement<TValue>>;
2005
2087
  }) | ({
2006
2088
  $each: MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue>>, TCustomRules>, ArrayElement<TValue>>;
2007
- } & FieldRegleBehaviourOptions);
2089
+ } & CollectionRegleBehaviourOptions);
2008
2090
 
2009
2091
  type RegleInitPropertyGetter<TValue, TReturn, TParams extends [...any[]], TMetadata extends RegleRuleMetadataDefinition> = TReturn | ((metadata: RegleRuleMetadataConsumer<TValue, TParams, TMetadata>) => TReturn);
2010
2092
  /**
@@ -2169,14 +2251,14 @@ type $InternalFormPropertyTypes = $InternalRegleRuleDecl | $InternalRegleCollect
2169
2251
  * @public
2170
2252
  * Rule tree for a form property
2171
2253
  */
2172
- type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = FieldRegleBehaviourOptions & {
2173
- [TKey in keyof TCustomRules]?: NonNullable<TCustomRules[TKey]> extends RegleRuleWithParamsDefinition<any, infer TParams> ? RegleRuleDefinition<TValue, [...TParams, ...args: [...any[]]], boolean> : NonNullable<TCustomRules[TKey]> extends RegleRuleDefinition<any, any[], any, any> ? FormRuleDeclaration<TValue, any[]> : FormRuleDeclaration<TValue, any[]> | FieldRegleBehaviourOptions[keyof FieldRegleBehaviourOptions];
2254
+ type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions> = TOptions & {
2255
+ [TKey in keyof TCustomRules]?: NonNullable<TCustomRules[TKey]> extends RegleRuleWithParamsDefinition<any, infer TParams> ? RegleRuleDefinition<TValue, [...TParams, ...args: [...any[]]], boolean> : NonNullable<TCustomRules[TKey]> extends RegleRuleDefinition<any, any[], any, any> ? FormRuleDeclaration<TValue, any[]> : FormRuleDeclaration<TValue, any[]> | TOptions[keyof TOptions];
2174
2256
  };
2175
2257
  /**
2176
2258
  * @internal
2177
2259
  * @reference {@link RegleRuleDecl}
2178
2260
  */
2179
- type $InternalRegleRuleDecl = FieldRegleBehaviourOptions & Record<string, FormRuleDeclaration<any, any>>;
2261
+ type $InternalRegleRuleDecl = FieldRegleBehaviourOptions & CollectionRegleBehaviourOptions & Record<string, FormRuleDeclaration<any, any>>;
2180
2262
  /**
2181
2263
  * @public
2182
2264
  */
@@ -2188,9 +2270,9 @@ type RegleCollectionRuleDeclKeyProperty = {
2188
2270
  */
2189
2271
  type RegleCollectionRuleDecl<TValue = any[], TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = ({
2190
2272
  $each?: RegleCollectionEachRules<TValue, TCustomRules>;
2191
- } & RegleRuleDecl<NonNullable<TValue>, TCustomRules>) | ({
2273
+ } & RegleRuleDecl<NonNullable<TValue>, TCustomRules, CollectionRegleBehaviourOptions>) | ({
2192
2274
  $each?: RegleCollectionEachRules<TValue, TCustomRules>;
2193
- } & FieldRegleBehaviourOptions);
2275
+ } & CollectionRegleBehaviourOptions);
2194
2276
  /** @public */
2195
2277
  type RegleCollectionEachRules<TValue = any[], TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue>>, TCustomRules>, ArrayElement<TValue>, RegleCollectionRuleDeclKeyProperty>;
2196
2278
  /**
@@ -2298,7 +2380,7 @@ type $InternalRegleStatusType = $InternalRegleCollectionStatus | $InternalRegleS
2298
2380
  /**
2299
2381
  * @public
2300
2382
  */
2301
- type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any, Partial<AllRulesDeclarations>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleCommonStatus<TState>, '$value'> & {
2383
+ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any, Partial<AllRulesDeclarations>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleCommonStatus<TState>, '$value' | '$silentValue'> & {
2302
2384
  /** A reference to the original validated model. It can be used to bind your form with v-model.*/
2303
2385
  $value: MaybeOutput<UnwrapNestedRefs<TState>>;
2304
2386
  /** $value variant that will not "touch" the field and update the value silently, running only the rules, so you can easily swap values without impacting user interaction. */
@@ -2348,6 +2430,7 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
2348
2430
  * @public
2349
2431
  */
2350
2432
  interface RegleCommonStatus<TValue = any> {
2433
+ /** Indicates whether the field is invalid. It becomes true if any associated rules return false. */
2351
2434
  readonly $invalid: boolean;
2352
2435
  /**
2353
2436
  * This is not the opposite of `$invalid`. Correct is meant to display UI validation report.
@@ -2358,9 +2441,16 @@ interface RegleCommonStatus<TValue = any> {
2358
2441
  * - Passes validation
2359
2442
  */
2360
2443
  readonly $correct: boolean;
2444
+ /** Indicates whether a field has been validated or interacted with by the user at least once. It's typically used to determine if a message should be displayed to the user. You can change this flag manually using the $touch and $reset methods. The $dirty flag is considered true if the current model has been touched or if all its children are dirty.*/
2361
2445
  readonly $dirty: boolean;
2446
+ /** Similar to $dirty, with one exception. The $anyDirty flag is considered true if given model was touched or any of its children are $anyDirty which means at least one descendant is $dirty. */
2362
2447
  readonly $anyDirty: boolean;
2448
+ /** Indicates whether a field has been touched and if the value is different than the initial one.
2449
+ * On nested elements and collections, it's true only if all its children are also `$edited`.
2450
+ * Use `$anyEdited` to check for any edited children
2451
+ */
2363
2452
  readonly $edited: boolean;
2453
+ /** Similar to $edited, with one exception. The $anyEdited flag is considered true if given model was edited or any of its children are $anyEdited which means at least one descendant is $edited. */
2364
2454
  readonly $anyEdited: boolean;
2365
2455
  /** Indicates if any async rule for the field is currently running. Always false for synchronous rules. */
2366
2456
  readonly $pending: boolean;
@@ -2419,7 +2509,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
2419
2509
  /** Reset the $valid, $metadata and $pending states */
2420
2510
  $reset(): void;
2421
2511
  /** Returns the original rule validator function. */
2422
- $validator: ((value: MaybeInput<TValue>, ...args: any[]) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>) & ((value: TValue, ...args: [TParams] extends [never[]] ? [] : [unknown[]] extends [TParams] ? any[] : TParams) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>);
2512
+ $validator: ((value: IsUnknown$1<TValue> extends true ? any : MaybeInput<TValue>, ...args: any[]) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>) & ((value: IsUnknown$1<TValue> extends true ? any : TValue, ...args: [TParams] extends [never[]] ? [] : [unknown[]] extends [TParams] ? any[] : TParams) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>);
2423
2513
  } & ([TParams] extends [never[]] ? {} : [unknown[]] extends [TParams] ? {
2424
2514
  readonly $params?: any[];
2425
2515
  } : {
@@ -2493,6 +2583,9 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
2493
2583
  $validate: () => Promise<$InternalRegleResult>;
2494
2584
  }
2495
2585
 
2586
+ interface SuperCompatibleRegle {
2587
+ r$: SuperCompatibleRegleRoot;
2588
+ }
2496
2589
  /** Supports both core Regle and schemas Regle for Zod/Valibot */
2497
2590
  type SuperCompatibleRegleRoot = SuperCompatibleRegleStatus & {
2498
2591
  $groups?: {
@@ -2797,4 +2890,4 @@ declare function defineRules<TRules extends RegleUnknownRulesTree>(rules: TRules
2797
2890
  */
2798
2891
  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>;
2799
2892
 
2800
- export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HaveAnyRequiredProps, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useScopedRegle, variantToRef };
2893
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HaveAnyRequiredProps, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useScopedRegle, variantToRef };
@@ -1,2 +1,2 @@
1
- import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick,markRaw}from'vue';function re(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var Dt=Symbol("regle-rule");function ir(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 G(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>G(n)))),r=="Map"&&(t=new Map([...e].map(n=>[G(n[0]),G(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,ir(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=G(e[n]);}return t}function k(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fe(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var l=r[0],u=r.slice(1),f=u.length,a=0;a<f;a++){var g=u[a];for(var p in g)l[p]=g[p];}return l}function Ze(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]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Ge(e,t,r){let n,a=(...l)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}var et={Inline:"__inline",Async:"__async"};function It(e,t){return e.some(r=>r[t])}function Ot(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function ne(e){try{return e.map(t=>toValue(t))}catch{return []}}function wt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Pt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(u=>u.trim()).filter(u=>u.length>0).length:0}function tt(e,...t){let{validator:r,type:n}=e,a=n===et.Async||r.constructor.name==="AsyncFunction";return markRaw({...{validator(f,...g){return e.validator(f,...ne(g.length?g:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ne(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ne(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ne(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let g=e.validator(f,...ne(t)),p;return g instanceof Promise?g.then(d=>(p=d,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=g,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:wt(t),_brand:Dt})}function rt(e){if(typeof e.validator=="function"){let r=tt(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(Pt(e.validator)>1){let a=function(...l){return tt(e,...l)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function nt(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),l=shallowRef(new Map);function u(y){let h=t.value.get(y);if(h)return h;{let x=ref({});return t.value.set(y,x),x}}function f(y){let h=r.value.get(y);if(h)return h;{let x=ref([]);return r.value.set(y,x),x}}function g(y,h,x){l.value.set(`${y}-${h}`,x);}function p(y,h){return l.value.get(`${y}-${h}`)}function d(y,h){y&&h!=null&&l.value.delete(`${y}-${h}`);}function W(y,h){n.value.set(y,h);}function b(y){return n.value.get(y)??false}function P(y,h){e.value.set(y,h);}function I(y,h){let x=e.value.get(y);return x?w(h,x)?{valid:true}:{valid:false}:void 0}function w(y,h){let x=Object.keys(h),T=Object.keys(y);return T.length!==x.length||!T.every(i=>x.includes(i))?false:T.every(i=>{let s=y[i],v=h[i];return !v||!s||typeof s=="function"||typeof v=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((B,L)=>{if(typeof v=="number"||typeof v=="boolean")return true;{let J=ne(v._params),z=ne(s._params);return J?.[L]===z?.[L]}}):true})}function o(y){let h=a.value.get(y);if(h)return h;{let x=ref(false),T=ref(true),Q=ref({}),i=ref(false);return a.value.set(y,{$pending:x,$valid:T,$metadata:Q,$validating:i}),{$pending:x,$valid:T,$metadata:Q,$validating:i}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:W,checkRuleDeclEntry:I,getDirtyState:b,trySetRuleStatusRef:o,getFieldsEntry:u,getCollectionsEntry:f,getArrayStatus:p,addArrayStatus:g,deleteArrayStatus:d,arrayStatusStorage:l}}function We(e){return k(e.value)}function at(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Ve={LessThan:-1,EqualTo:0,GreaterThan:1};function vr(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let l=Number(r[a]),u=Number(n[a]);if(l>u)return Ve.GreaterThan;if(u>l)return Ve.LessThan;if(!isNaN(l)&&isNaN(u))return Ve.GreaterThan;if(isNaN(l)&&!isNaN(u))return Ve.LessThan}return Ve.EqualTo}var Be=vr(version,"3.5.0")!==-1;function $r(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?$r():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Mt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function At(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function Le(e,t){return We(e)||k(t.value)&&!re(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Ft(e,t,r=false){return !!e.value&&k(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(k)||Array.isArray(t.value)&&t.value.some(k)}function He(e){return !!e.value&&k(e.value)}function $e(e){return k(e)&&"_validator"in e}function je(e){return typeof e.value=="function"?"_validator"in e.value:true}function Vt(e){return k(e)&&"$fields"in e}function lt(e){return !!e&&"$rules"in e}function ot({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function jt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function _t(e){return k(e)&&"$each"in e}function st(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!k(n)))return e;if(_t(e)){let n=r?e.$self?.map(l=>({error:l,path:""}))??[]:e.$self??[],a=e.$each?.map(l=>ze(l,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>ze(a,r,[n])).flat()}function ze(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!k(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(_t(e)){let a=n?.length?e.$self?.map(u=>({error:u,path:n.join(".")}))??[]:e.$self??[],l=e.$each?.map((u,f)=>ze(u,t,n?.concat(f.toString())))??[];return a?.concat(l.flat())}else return Object.entries(e).map(([a,l])=>ze(l,t,n?.concat(a))).flat()}function Ut({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:l,$debounce:u,modifiers:f}){let g=effectScope(),p={},d,W=ref(false),b=ref(false),{$pending:P,$valid:I,$metadata:w,$validating:o}=l.trySetRuleStatusRef(`${a}.${r}`);function y(){g=effectScope(),p=g.run(()=>{let v=ref(false),B=ref(false),L=ref(true),J=ref(false),z=ref(false),oe=computed(()=>({$value:n.value,$error:B.value,$dirty:v.value,$pending:J.value,$correct:z.value,$invalid:L.value,$rule:{$valid:I.value,$invalid:!I.value,$pending:P.value},$params:c.value,...w.value})),E=computed(()=>je(t)?typeof t.value.active=="function"?t.value.active(oe.value):!!t.value.active:true);function K(S){let M="",R=e?e[r]?.[S]:void 0;if(R&&(typeof R=="function"?M=R(oe.value):M=R),je(t)){let N=`_${S}_patched`;R&&!t.value[N]||(typeof t.value[S]=="function"?M=t.value[S](oe.value):M=t.value[S]??"");}return M}let ge=computed(()=>{let S=K("message");return re(S)&&(S="This field is not valid"),S}),Re=computed(()=>K("tooltip")),O=computed(()=>je(t)&&t.value.type?t.value.type:r),V=computed(()=>je(t)?t.value.validator:t.value),c=computed(()=>typeof t.value=="function"?[]:ne(t.value._params??[])),m=computed(()=>`${a}.${O.value}`);return {$active:E,$message:ge,$type:O,$validator:V,$params:c,$path:m,$tooltip:Re,$fieldCorrect:z,$fieldError:B,$fieldDirty:v,$fieldPending:J,$fieldInvalid:L}}),d=watch(p?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&p.$fieldError.value)&&Q();});}y();function h(){I.value=true,p.$fieldDirty.value&&(P.value=true);}async function x(){let v=false;try{let B=p.$validator.value;if(typeof B!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let L=B(n.value,...p.$params.value),J=n.value;h();let z;if(L instanceof Promise?z=await L:z=L,n.value!==J)return !0;if(typeof z=="boolean")v=z;else {let{$valid:oe,...E}=z;v=oe,w.value=E;}}catch{v=false;}finally{P.value=false;}return v}let T=Ge(x,u??200);async function Q(){try{o.value=!0;let v=!1;if(b.value=!0,$e(t.value)&&t.value._async)v=await T();else {let B=p.$validator.value,L=B(n.value,...p.$params.value);if(L 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(L!=null)if(typeof L=="boolean")v=L;else {let{$valid:J,...z}=L;v=J,w.value=z;}}return I.value=v,v}catch{return false}finally{o.value=false,b.value=false;}}function i(){I.value=true,w.value={},P.value=false,o.value=false,y();}function s(){d(),g.stop(),g=effectScope();}return reactive({...p,$pending:P,$valid:I,$metadata:w,$haveAsync:W,$maybePending:b,$validating:o,$parse:Q,$unwatch:s,$watch:y,$reset:i})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:l,options:u,externalErrors:f,schemaErrors:g,schemaMode:p,onUnwatch:d,$isArray:W,initialState:b,shortcuts:P,onValidate:I}){let w=effectScope(),o,y=[],h,x,T,Q,i,s=()=>{};function v(){let $=t.value,j=l.checkRuleDeclEntry(n,$);K.value=Object.fromEntries(Object.entries($).filter(([A])=>A.startsWith("$"))),J(),E.value=Object.fromEntries(Object.entries(t.value).filter(([A])=>!A.startsWith("$")).map(([A,te])=>{if(te){let ie=toRef(()=>te);return [A,Ut({modifiers:{$silent:o.$silent,$rewardEarly:o.$rewardEarly},customMessages:r,rule:ie,ruleKey:A,state:e,path:n,storage:l,$debounce:K.value.$debounce})]}return []}).filter(A=>!!A.length)),o.processShortcuts(),B(),j?.valid!=null&&(o.$dirty.value=l.getDirtyState(n),(o.$dirty.value&&!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s()),l.addRuleDeclEntry(n,$);}function B(){s=o.$debounce.value?Ge(oe,o.$debounce.value??o.$haveAnyAsyncRule?100:0):oe;}function L(){E.value&&Object.entries(E.value).forEach(([$,j])=>{j.$unwatch();}),T(),i?.(),o.$dirty.value&&l.setDirtyEntry(n,o.$dirty.value),h?.(),x?.(),w.stop(),w=effectScope(),y.forEach($=>$.stop()),y=[],d?.(),Q?.();}function J(){E.value&&Object.entries(E.value).forEach(([$,j])=>{j.$watch();}),o=w.run(()=>{let $=ref(false),j=ref(false),A=computed(()=>$.value),te=computed(()=>K.value.$debounce),ie=computed(()=>K.value.$lazy!=null?K.value.$lazy:unref(u.lazy)!=null?unref(u.lazy):false),fe=computed(()=>K.value.$rewardEarly!=null?K.value.$rewardEarly:unref(u.rewardEarly)!=null?unref(u.rewardEarly):false),Te=computed(()=>K.value.$clearExternalErrorsOnChange!=null?K.value.$clearExternalErrorsOnChange:unref(u.clearExternalErrorsOnChange)!=null?unref(u.clearExternalErrorsOnChange):true),C=computed(()=>fe.value?true:K.value.$silent!=null?K.value.$silent:unref(u.silent)!=null?unref(u.silent):false),_=computed(()=>K.value.$autoDirty!=null?K.value.$autoDirty:unref(u.autoDirty)!=null?unref(u.autoDirty):true),D=computed(()=>Object.entries(E.value).some(([ue,ee])=>ee.$validating)),F=computed({get:()=>e.value,set(ue){h(),e.value=ue,z();}}),ve=computed(()=>he.value&&!be.value&&$.value),gt=computed(()=>ot({field:{$rules:E.value,$error:ve.value,$externalErrors:f?.value,$schemaErrors:g?.value}})),vt=computed(()=>ot({field:{$rules:E.value,$error:ve.value,$externalErrors:f?.value,$schemaErrors:g?.value},silent:true})),Xe=computed(()=>$.value?b.value instanceof Date&&e.value instanceof Date?Ze(b.value).getDate()!==Ze(e.value).getDate():b.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(b.value)?e.value.length!==b.value.length:b.value!==e.value:false),$t=computed(()=>Xe.value),St=computed(()=>jt({field:{$rules:E.value}})),Tt=computed(()=>(C.value||A.value)&&!(he.value||be.value)),be=computed(()=>j.value||!fe.value?Object.entries(E.value).some(([ue,ee])=>ee.$pending):false),he=computed(()=>f?.value?.length||g?.value?.length?true:ke.value?false:!fe.value||fe.value&&j.value?Object.entries(E.value).some(([ue,ee])=>!(ee.$valid&&!ee.$maybePending)):false),bt=computed(()=>a),ke=computed(()=>!!(re(E.value)&&!p)),ht=computed(()=>f?.value?.length||ke.value?false:$.value&&!re(e.value)&&!D.value&&!be.value?p?!g?.value?.length:Object.values(E.value).some(ee=>ee.$active)?Object.values(E.value).filter(ee=>ee.$active).every(ee=>ee.$valid):false:false),or=computed(()=>Object.entries(E.value).some(([ue,ee])=>ee.$haveAsync));function sr(){P?.fields&&Object.entries(P.fields).forEach(([ue,ee])=>{let Et=effectScope();xt[ue]=Et.run(()=>{let Ct=ref();return watchEffect(()=>{Ct.value=ee(reactive({$dirty:$,$externalErrors:f?.value??[],$value:e,$silentValue:F,$rules:E,$error:ve,$pending:be,$invalid:he,$correct:ht,$errors:gt,$ready:Tt,$silentErrors:vt,$anyDirty:A,$tooltips:St,$name:bt,$inactive:ke,$edited:Xe,$anyEdited:$t}));}),Ct}),y.push(Et);});}let xt={};return watch(he,ue=>{ue||(j.value=false);}),{$error:ve,$pending:be,$invalid:he,$correct:ht,$debounce:te,$lazy:ie,$errors:gt,$ready:Tt,$silentErrors:vt,$rewardEarly:fe,$autoDirty:_,$silent:C,$clearExternalErrorsOnChange:Te,$anyDirty:A,$edited:Xe,$anyEdited:$t,$name:bt,$haveAnyAsyncRule:or,$shortcuts:xt,$validating:D,$tooltips:St,$dirty:$,triggerPunishment:j,processShortcuts:sr,$silentValue:F,$inactive:ke}}),z(),T=watch(o.$dirty,$=>{l.setDirtyEntry(n,$),Object.values(E.value).forEach(j=>{j.$fieldDirty=$;});}),i=watch([o.$error,o.$correct,o.$invalid,o.$pending],()=>{Object.values(E.value).forEach($=>{$.$fieldError=o.$error.value,$.$fieldInvalid=o.$invalid.value,$.$fieldPending=o.$pending.value,$.$fieldCorrect=o.$correct.value;});}),x=watch(o.$invalid,$=>{o.$rewardEarly.value&&!$&&(o.triggerPunishment.value=false);}),Q=watch(o.$haveAnyAsyncRule,B);}function z(){h=watch(e,()=>{o.$autoDirty.value&&!o.$silent.value&&(o.$dirty.value||(o.$dirty.value=true)),t.value instanceof Function&&v(),(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s(),o.$rewardEarly.value!==true&&o.$clearExternalErrorsOnChange.value&&c();},{deep:W?true:Be?1:true});}function oe(){Object.values(E.value).forEach($=>{$.$parse();});}let E=ref({}),K=ref({});v();function ge($,j){if(c(),o.$dirty.value=false,o.triggerPunishment.value=false,l.setDirtyEntry(n,false),!j)if($?.toInitialState)e.value=G(b);else if($?.toState){let A;typeof $?.toState=="function"?A=$?.toState():A=$?.toState,b.value=G(A),e.value=G(A);}else b.value=k(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;$?.clearExternalErrors&&c(),j||Object.entries(E.value).forEach(([A,te])=>{te.$reset();}),!o.$lazy.value&&!o.$silent.value&&!j&&Object.values(E.value).forEach(A=>A.$parse());}function Re($=true,j=false){o.$dirty.value||(o.$dirty.value=true),j&&$?(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s():$&&s();}async function O(){try{if(p)return I?(Re(!1),I()):{valid:!1,data:e.value};let $=e.value;if(o.triggerPunishment.value=!0,!o.$dirty.value)o.$dirty.value=!0;else if(!o.$silent.value&&o.$dirty.value&&!o.$pending.value)return {valid:!o.$error.value,data:$};return p?{valid:!g?.value?.length,data:$}:re(E.value)?{valid:!0,data:$}:{valid:(await Promise.allSettled(Object.entries(E.value).map(([te,ie])=>ie.$parse()))).every(te=>te.status==="fulfilled"?te.value===!0:!1),data:$}}catch{return {valid:false,data:e.value}}}function V($=true){return o.$dirty.value?e.value:$?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!o.$lazy.value&&!o.$dirty.value&&!o.$silent.value&&s();let{$shortcuts:m,$validating:S,$autoDirty:M,$rewardEarly:R,$clearExternalErrorsOnChange:N,$haveAnyAsyncRule:X,$debounce:Y,$lazy:Z,triggerPunishment:pe,...se}=o;return reactive({...se,$externalErrors:f,$value:e,$rules:E,...m,$reset:ge,$touch:Re,$validate:O,$unwatch:L,$watch:J,$extractDirtyFields:V,$clearExternalErrors:c})}function ct({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:u,rules:f,externalErrors:g,schemaErrors:p,initialState:d,shortcuts:W,fieldName:b,schemaMode:P}){let I=f.$key?f.$key:Ce(),w=`${t}.${String(I)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?w=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:I,enumerable:false,configurable:false,writable:false}}));let o=toRef(g?.value??[],r),y=computed(()=>p?.value?.[r]),h=Oe({state:l,rulesDef:toRef(()=>f),customMessages:u,path:w,storage:a,options:n,externalErrors:o,schemaErrors:y,initialState:d,shortcuts:W,fieldName:b,schemaMode:P});if(h){let x=l.value?.$id;h.$id=x??String(I),a.addArrayStatus(e,h.$id,h);}return h}function Bt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:u,schemaErrors:f,schemaMode:g,initialState:p,shortcuts:d,fieldName:W}){let b=effectScope(),P,I=effectScope(),w,o=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let y=ref(),h=ref(e.value),x=ref({}),T,Q,i=ref({}),s=a.getCollectionsEntry(n);w=I.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(m=>typeof m!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(m=>$e(m)||typeof m=="function"):false)})),v(),J();function v(){x.value=Object.fromEntries(Object.entries(t.value).filter(([c])=>c.startsWith("$"))),typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(y.value=Ce(),Object.defineProperties(e.value,{$id:{value:y.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(y.value=e.value.$id)),h.value=i.value.$value,Array.isArray(e.value)&&!w.isPrimitiveArray.value?s.value=e.value.filter(c=>typeof c=="object").map((c,m)=>{let{scope:S,unwrapped:M}=at(t.value.$each,toRef(()=>c),m);S&&o.push(S);let R=toRef(p.value??[],m),N=toRef(u?.value??{},"$each"),X=computed(()=>f?.value?.$each),Y=ct({$id:y.value,path:n,customMessages:r,rules:M??{},stateValue:toRef(()=>c),index:m,options:l,storage:a,externalErrors:N,schemaErrors:X,initialState:R,shortcuts:d,fieldName:W,schemaMode:g});return Y||null}).filter(c=>!!c):s.value=[],i.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:toRef(u?.value??{},"$self"),schemaErrors:computed(()=>f?.value?.$self),$isArray:true,initialState:p,shortcuts:d,fieldName:W,schemaMode:g});}function B(){if(Array.isArray(e.value)&&!w.isPrimitiveArray.value){let c=G(s.value);s.value=e.value.filter(m=>typeof m=="object").map((m,S)=>{let M=toRef(()=>m);if(m.$id&&s.value.find(R=>R.$id===m.$id)){let R=a.getArrayStatus(y.value,m.$id);return R?(R.$value=M,R):null}else {let{scope:R,unwrapped:N}=at(t.value.$each,M,S);R&&o.push(R);let X=toRef(u?.value??{},"$each"),Y=computed(()=>f?.value?.$each??[]),Z=ct({$id:y.value,path:n,customMessages:r,rules:N??{},stateValue:M,index:S,options:l,storage:a,externalErrors:X,schemaErrors:Y,initialState:toRef(p.value??[],S),shortcuts:d,fieldName:W,schemaMode:g});return Z||null}}).filter(m=>!!m),c.filter(m=>!e.value?.find(S=>m.$id===S.$id)).forEach((m,S)=>{a.deleteArrayStatus(y.value,S.toString());});}else s.value=[];}function L(){T=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?v():B();},{deep:Be?1:true,flush:"pre"}),Q=watch(e,()=>{P.$autoDirty.value&&!P.$silent.value&&oe(false,true);},{flush:"pre"});}function J(){L(),b=effectScope(),P=b.run(()=>{let c=computed({get:()=>e.value,set(C){T?.(),Q?.(),e.value=C,L();}}),m=computed(()=>i.value.$dirty&&(!s.value.length||s.value.every(C=>C.$dirty))),S=computed(()=>i.value.$anyDirty||s.value.some(C=>C.$anyDirty)),M=computed(()=>i.value.$invalid||s.value.some(C=>C.$invalid)),R=computed(()=>(re(i.value.$rules)?true:i.value.$correct)&&(!s.value.length||s.value.every(C=>C.$correct||C.$anyDirty&&!C.$invalid))),N=computed(()=>i.value.$error||s.value.some(C=>C.$error)),X=computed(()=>!(M.value||Y.value)),Y=computed(()=>i.value.$pending||s.value.some(C=>C.$pending)),Z=computed(()=>!!s.value.length&&s.value.every(C=>C.$edited)),pe=computed(()=>i.value.$anyEdited||s.value.some(C=>C.$anyEdited)),se=computed(()=>({$self:i.value.$errors,$each:s.value.map(C=>C.$errors)})),$=computed(()=>({$self:i.value.$silentErrors,$each:s.value.map(C=>C.$silentErrors)})),j=computed(()=>x.value.$rewardEarly!=null?x.value.$rewardEarly:unref(l.rewardEarly)!=null?unref(l.rewardEarly):false),A=computed(()=>j.value?true:x.value.$silent!=null?x.value.$silent:unref(l.silent)!=null?unref(l.silent):false),te=computed(()=>x.value.$autoDirty!=null?x.value.$autoDirty:unref(l.autoDirty)!=null?unref(l.autoDirty):true),ie=computed(()=>W);function fe(){d?.collections&&Object.entries(d?.collections).forEach(([C,_])=>{let D=effectScope();Te[C]=D.run(()=>{let F=ref();return watchEffect(()=>{F.value=_(reactive({$dirty:m,$error:N,$silentValue:c,$pending:Y,$invalid:M,$correct:R,$errors:se,$ready:X,$silentErrors:$,$anyDirty:S,$name:ie,$each:s,$self:i,$value:e,$edited:Z,$anyEdited:pe}));}),F}),o.push(D);});}let Te={};return fe(),{$dirty:m,$anyDirty:S,$invalid:M,$correct:R,$error:N,$pending:Y,$errors:se,$silentErrors:$,$ready:X,$name:ie,$shortcuts:Te,$silentValue:c,$edited:Z,$anyEdited:pe,$rewardEarly:j,$silent:A,$autoDirty:te}}),w.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function z(){T?.(),i.value&&i.value.$unwatch(),s.value&&s.value.forEach(c=>{"$dirty"in c&&c.$unwatch();}),b.stop(),b=effectScope(),I.stop(),I=effectScope(true),o.forEach(c=>c.stop()),o=[];}function oe(c=true,m=false){i.value.$touch(c,m),s.value.forEach(S=>{S.$touch(c,m);});}function E(c,m){if(z(),!m)if(c?.toInitialState)e.value=G(p.value);else if(c?.toState){let S;typeof c?.toState=="function"?S=c?.toState():S=c?.toState,p.value=G(S),e.value=G(S);}else p.value=G(e.value);c?.clearExternalErrors&&ge(),i.value.$reset(),s.value.forEach(S=>{S.$reset(c,true);}),m||v();}async function K(){let c=e.value;try{return {valid:(await Promise.allSettled([i.value.$validate(),...s.value.map(M=>M.$validate())])).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:c}}catch{return {valid:false,data:c}}}function ge(){i.value.$clearExternalErrors(),s.value.forEach(c=>{c.$clearExternalErrors();});}function Re(c=true){let m=s.value.map(S=>{if(Vt(S))return S.$extractDirtyFields(c)});return c&&m.every(S=>re(S))&&(m=[]),m}let{$shortcuts:O,...V}=P;return reactive({$self:i,...V,...O,$each:s,$value:e,$validate:K,$unwatch:z,$watch:J,$touch:oe,$reset:E,$extractDirtyFields:Re,$clearExternalErrors:ge})}function Ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:l,rootSchemaErrors:u,validationGroups:f,initialState:g,fieldName:p,...d}){let W=effectScope(),b,P=[],I=null,w=null,o=null,y=null;async function x(O=true){let V=Object.entries(e.value),c=Object.fromEntries(V.filter(([R,N])=>!!N).map(([R,N])=>{if(N){let X=toRef(t.value??{},R),Y=toRef(()=>N),Z=toRef(a?.value??{},R),pe=computed(()=>l?.value?.[R]),se=toRef(g?.value??{},R);return [R,Oe({state:X,rulesDef:Y,path:r?`${r}.${R}`:R,externalErrors:Z,schemaErrors:pe,initialState:se,fieldName:R,...d})]}return []})),m=Object.fromEntries(Object.entries(unref(a)??{}).filter(([R,N])=>!(R in e.value)&&!!N).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,Oe({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),S=Object.fromEntries(Object.entries(unref(l)??{}).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,Oe({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),M=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(m??{}))&&!(R in(S??{}))).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,Oe({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]}));T.value={...c,...m,...S,...M},O&&s();}let T=d.storage.getFieldsEntry(r);x();function Q(){a&&(o=watch(a,()=>{v(),x();},{deep:true}));}function i(){y=watch(t,()=>{v(),x(),b.$autoDirty.value&&!b.$silent.value&&J(false,true);});}function s(){n&&(I?.(),I=watch(n,()=>{v(),x();},{deep:true,flush:"pre"}),Q()),u&&(w?.(),w=watch(u,()=>{v(),x();},{deep:true,flush:"post"})),i(),b=W.run(()=>{let O=computed({get:()=>t.value,set(_){v(),t.value=_,x(),b.$autoDirty.value&&!b.$silent.value&&J(false,true);}}),V=computed({get:()=>t.value,set(_){v(),t.value=_,x();}}),c=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([_,D])=>D?.$dirty)),m=computed(()=>Object.entries(T.value).some(([_,D])=>D?.$anyDirty)),S=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([_,D])=>D?.$invalid)),M=computed(()=>{let _=Object.entries(T.value).filter(([D,F])=>lt(F)?!F.$inactive:true);return _.length?_.every(([D,F])=>d.schemaMode?F.$correct:lt(F)?"required"in F.$rules&&F.$rules.required.$active?F?.$correct:!F.$invalid&&!F.$pending:F?.$correct):false}),R=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([_,D])=>D?.$error)),N=computed(()=>unref(d.options.rewardEarly)!=null?unref(d.options.rewardEarly):false),X=computed(()=>unref(d.options.silent)!=null?unref(d.options.silent):!!N.value),Y=computed(()=>unref(d.options.autoDirty)!=null?unref(d.options.autoDirty):true),Z=computed(()=>(X.value||m.value)&&!(S.value||se.value)),pe=ref(false),se=computed(()=>pe.value||Object.entries(T.value).some(([_,D])=>D?.$pending)),$=computed(()=>Object.fromEntries(Object.entries(T.value).map(([_,D])=>[_,D?.$errors]))),j=computed(()=>Object.fromEntries(Object.entries(T.value).map(([_,D])=>[_,D?.$silentErrors]))),A=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([_,D])=>D?.$edited)),te=computed(()=>Object.entries(T.value).some(([_,D])=>D?.$anyEdited)),ie=computed(()=>p);function fe(){d.shortcuts?.nested&&Object.entries(d.shortcuts.nested).forEach(([_,D])=>{let F=effectScope();C[_]=F.run(()=>{let ve=ref();return watchEffect(()=>{ve.value=D(reactive({$dirty:c,$value:t,$silentValue:V,$error:R,$pending:se,$invalid:S,$correct:M,$ready:Z,$anyDirty:m,$name:ie,$silentErrors:j,$errors:$,$fields:T,$edited:A,$anyEdited:te}));}),ve}),P.push(F);});}let Te=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(T.value)??{}).map(([_,D])=>D.length?[_,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(F=>[F,It(D,F)])),...Object.fromEntries(["$errors","$silentErrors"].map(F=>[F,Ot(D,F)]))}]:[])):{},set(){}}),C={};return fe(),{$dirty:c,$anyDirty:m,$invalid:S,$correct:M,$error:R,$pending:se,$errors:$,$silentErrors:j,$ready:Z,$name:ie,$shortcuts:C,$groups:Te,$silentValue:V,$edited:A,$anyEdited:te,$localPending:pe,$autoDirty:Y,$silent:X,$value:O}});}function v(){I?.(),o?.(),y?.(),w?.(),P=[],b={},T.value&&Object.entries(T.value).forEach(([O,V])=>{V.$unwatch();});}function B(){Object.entries(T.value).forEach(([O,V])=>{V.$clearExternalErrors();});}function L(O,V){if(o?.(),v(),!V)if(O?.toInitialState)t.value=G({...g.value??{}});else if(O?.toState){let c;typeof O?.toState=="function"?c=O?.toState():c=O?.toState,g.value=G(c),t.value=G(c);}else g.value=G(t.value);Object.values(T.value).forEach(c=>{c.$reset(O,true);}),O?.clearExternalErrors&&B(),Q(),V||x();}function J(O=true,V=false){Object.values(T.value).forEach(c=>{c.$touch(O,V);});}function z(O){return O.filter(([V,c])=>k(c)?!(c&&typeof c=="object"&&"_null"in c)&&!re(c):Array.isArray(c)?c.length:true)}function oe(O=true){let V=Object.entries(T.value).map(([c,m])=>[c,m.$extractDirtyFields(O)]);return O&&(V=z(V)),Object.fromEntries(V)}async function E(){try{if(d.schemaMode)return d.onValidate?(J(!1),b.$localPending.value=!0,d.onValidate()):{valid:!1,data:t.value};{let O=t.value;return {valid:(await Promise.allSettled(Object.values(T.value).map(m=>m.$validate()))).every(m=>m.status==="fulfilled"?m.value.valid===!0:!1),data:O}}}catch{return {valid:false,data:t.value}}finally{b.$localPending.value=false;}}let{$shortcuts:K,$localPending:ge,...Re}=b;return reactive({...Re,...K,$fields:T,$reset:L,$touch:J,$validate:E,$unwatch:v,$watch:s,$clearExternalErrors:B,$extractDirtyFields:oe})}function Oe({rulesDef:e,...t}){if(Ft(e,t.state,t.schemaMode))return Bt({rulesDef:e,...t});if(Le(t.state,e)){if(We(t.state))return Ke({rulesDef:e,...t});{let n=effectScope().run(()=>{let u=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,f=>{u.value=f;},{deep:true}),watch(u,f=>{t.state.value=f;},{deep:true}),{fakeState:u}}),{state:a,...l}=t;return Ke({rulesDef:e,...l,state:n.fakeState})}}else if(He(e))return Ie({rulesDef:e,...t})}function Ae({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:l,schemaErrors:u,schemaMode:f=false,onValidate:g}){let p=nt(),d=ref();return Le(n,r)?d.value=Ke({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaErrors:u,rootSchemaErrors:u,schemaMode:f,onValidate:g}):He(r)&&(d.value=Ie({rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaMode:f,schemaErrors:u,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(l,u,f){let g=isRef(u)?u:typeof u=="function"?void 0:computed(()=>u),p={...n,...f},d=isRef(l)?l:ref(l),W=shallowRef(g??{});typeof u=="function"&&watchEffect(()=>{W.value=u(d),triggerRef(W);});let b=ref(k(d.value)?{...G(d.value)}:G(d.value));return {r$:Ae({scopeRules:W,state:d,options:p,initialState:b,customRules:e,shortcuts:r}).regle}}return a}var Je=qe();function Ye(){function e(t,r){return r}return e}var pt=Ye();function Kt({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=Ye();return {useRegle:n,inferRules:a}}function qt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},l=()=>({...a.rules?.(),...t?.()}),u=a.modifiers&&r?Fe(a.modifiers,r):r,f=a.shortcuts&&n?Fe(a.shortcuts,n):n,g=qe(l,u,f);g.__config={rules:l,modifiers:u,shortcuts:f};let p=Ye();return {useRegle:g,inferRules:p}}function Ne(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(i=>i.$value):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$value])),set:i=>{r||typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$value=v);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentValue])),set:i=>{typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$silentValue=v);}}),l=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$dirty)}),u=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyDirty)),f=computed(()=>Object.entries(e).some(([i,s])=>s?.$invalid)),g=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$correct||v.$anyDirty&&!v.$invalid)}),p=computed(()=>Object.entries(e).some(([i,s])=>s?.$error)),d=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$ready)}),W=computed(()=>Object.entries(e).some(([i,s])=>s?.$pending)),b=computed(()=>r?Object.entries(e).map(([i,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([i,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentErrors]))),I=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$edited)}),w=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyEdited)),o=computed(()=>r?Object.values(e):e);function y(i){Object.values(e).forEach(s=>{s.$reset(i);});}function h(){Object.values(e).forEach(i=>{i.$touch();});}function x(i=true){return Object.values(e).map(s=>s.$extractDirtyFields(i))}function T(){Object.values(e).forEach(i=>{i.$clearExternalErrors();});}async function Q(){try{let i=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(B=>B.$validate()))).every(B=>B.status==="fulfilled"?B.value.valid===!0:!1),data:i}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:b,$silentErrors:P,$instances:o,$value:n,$dirty:l,$anyDirty:u,$invalid:f,$correct:g,$error:p,$pending:W,$ready:d,$edited:I,$anyEdited:w,$reset:y,$touch:h,$validate:Q,$extractDirtyFields:x,$clearExternalErrors:T})}function Yt(e,t){function r(n){let a=computed(()=>toValue(n));f();let l=ref(g(e.value)),u=reactive({r$:l});function f(){a.value&&!e.value[a.value]&&(e.value[a.value]={});}watch(a,f),watch(e,p=>{l.value=g(p);},{deep:true});function g(p){if(a.value){let d=p[a.value]??{};return Ne(d,!t.asRecord)}else return Ne(p["~~global"]??{},!t.asRecord)}return {r$:u.r$}}return {useCollectScope:r}}function Zt(e,t){let r=t??Je;return {useScopedRegle:(a,l,u)=>{let{namespace:f,scopeKey:g,...p}=u??{};r.__config??={};let d=computed(()=>toValue(f)),W=ref(`${Object.keys(e.value).length+1}-${Ce()}`),b=computed(()=>u?.scopeKey??`instance-${W.value}`),{r$:P}=r(a,l,p);w(),Mt(I),watch(d,(o,y)=>{I(y),w();}),getCurrentInstance()&&onMounted(()=>{let o=getCurrentInstance();typeof window<"u"&&o?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(o?.proxy?.$el?.parentElement)&&I();});function I(o){let y=o??d.value;y?e.value[y]&&delete e.value[y][b.value]:e.value["~~global"][b.value]&&delete e.value["~~global"][b.value];}function w(){d.value?(e.value[d.value]||(e.value[d.value]={}),e.value[d.value][b.value]=P):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][b.value]=P);}return {r$:P,dispose:I,register:w}}}}function Qe(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):At(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Zt(r,e?.customUseRegle),{useCollectScope:a}=Yt(r,{asRecord:e?.asRecord});return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:dt,useScopedRegle:yt}=Qe();function rr(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let l=r.find(u=>{if(u[t]&&"literal"in u[t]){let f=u[t].literal;if($e(f))return unref(f._params?.[0])===n.value}});if(l)return l;{let u=r.find(f=>k(f[t])&&!Object.keys(f[t]).some(g=>g==="literal"));return u||{}}})}function mt(e,t,r){return k(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function nr(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),mt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function ar(e){return e}function lr(e,t){return r=>Fe({...e},t(r))}
2
- export{et as InternalRuleType,rt as createRule,Qe as createScopedUseRegle,rr as createVariant,Kt as defineRegleConfig,ar as defineRules,qt as extendRegleConfig,st as flatErrors,pt as inferRules,Ne as mergeRegles,mt as narrowVariant,lr as refineRules,ne as unwrapRuleParameters,dt as useCollectScope,Je as useRegle,Ae as useRootStorage,yt as useScopedRegle,nr as variantToRef};
1
+ import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick,markRaw}from'vue';function Ot(e){return e?.constructor.name=="File"||e?.constructor.name=="FileList"}function re(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Ot(e)?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var wt=Symbol("regle-rule");function fr(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 W(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>W(n)))),r=="Map"&&(t=new Map([...e].map(n=>[W(n[0]),W(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,fr(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=W(e[n]);}return t}function A(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function je(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var l=r[0],u=r.slice(1),c=u.length,a=0;a<c;a++){var g=u[a];for(var p in g)l[p]=g[p];}return l}function tt(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]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function We(e,t,r){let n,a=(...l)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}function Be(e,t,r=false,n=true){if(e===t)return true;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return false;var a,l,u;if(Array.isArray(e)&&Array.isArray(t)){if(a=e.length,a!=t.length)return false;if(n||!n&&r){for(l=a;l--!==0;)if(!Be(e[l],t[l],r,false))return false}return true}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(u=Object.keys(e),a=u.length,a!==Object.keys(t).length)return false;for(l=a;l--!==0;)if(!Object.prototype.hasOwnProperty.call(t,u[l]))return false;for(l=a;l--!==0;){var c=u[l];return !(A(e)&&A(t)&&(n||!n&&r)&&!Be(e[c],t[c],r,false))}return true}return e!==e&&t!==t}var rt={Inline:"__inline",Async:"__async"};function Pt(e,t){return e.some(r=>r[t])}function At(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function ne(e){try{return e.map(t=>toValue(t))}catch{return []}}function Mt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function jt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(u=>u.trim()).filter(u=>u.length>0).length:0}function nt(e,...t){let{validator:r,type:n}=e,a=n===rt.Async||r.constructor.name==="AsyncFunction";return markRaw({...{validator(c,...g){return e.validator(c,...ne(g.length?g:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ne(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ne(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ne(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let g=e.validator(c,...ne(t)),p;return g instanceof Promise?g.then(d=>(p=d,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=g,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:Mt(t),_brand:wt})}function at(e){if(typeof e.validator=="function"){let r=nt(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(jt(e.validator)>1){let a=function(...l){return nt(e,...l)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function lt(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),l=shallowRef(new Map);function u(y){let b=t.value.get(y);if(b)return b;{let x=ref({});return t.value.set(y,x),x}}function c(y){let b=r.value.get(y);if(b)return b;{let x=ref([]);return r.value.set(y,x),x}}function g(y,b,x){l.value.set(`${y}-${b}`,x);}function p(y,b){return l.value.get(`${y}-${b}`)}function d(y,b){y&&b!=null&&l.value.delete(`${y}-${b}`);}function L(y,b){n.value.set(y,b);}function h(y){return n.value.get(y)??false}function P(y,b){e.value.set(y,b);}function C(y,b){let x=e.value.get(y);return x?w(b,x)?{valid:true}:{valid:false}:void 0}function w(y,b){let x=Object.keys(b),T=Object.keys(y);return T.length!==x.length||!T.every(i=>x.includes(i))?false:T.every(i=>{let s=y[i],v=b[i];return !v||!s||typeof s=="function"||typeof v=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((H,z)=>{if(typeof v=="number"||typeof v=="boolean")return true;{let J=ne(v._params),K=ne(s._params);return J?.[z]===K?.[z]}}):true})}function o(y){let b=a.value.get(y);if(b)return b;{let x=ref(false),T=ref(true),Q=ref({}),i=ref(false);return a.value.set(y,{$pending:x,$valid:T,$metadata:Q,$validating:i}),{$pending:x,$valid:T,$metadata:Q,$validating:i}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:L,checkRuleDeclEntry:C,getDirtyState:h,trySetRuleStatusRef:o,getFieldsEntry:u,getCollectionsEntry:c,getArrayStatus:p,addArrayStatus:g,deleteArrayStatus:d,arrayStatusStorage:l}}function Le(e){return A(e.value)}function ot(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Fe={LessThan:-1,EqualTo:0,GreaterThan:1};function Tr(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let l=Number(r[a]),u=Number(n[a]);if(l>u)return Fe.GreaterThan;if(u>l)return Fe.LessThan;if(!isNaN(l)&&isNaN(u))return Fe.GreaterThan;if(isNaN(l)&&!isNaN(u))return Fe.LessThan}return Fe.EqualTo}var He=Tr(version,"3.5.0")!==-1;function hr(){return Math.floor(Math.random()*Date.now()).toString()}function xe(){return typeof window>"u"?hr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ft(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Vt(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function ze(e,t){return Le(e)||A(t.value)&&!re(t.value)&&!Object.entries(t.value).some(([r,n])=>ve(n)||typeof n=="function")}function _t(e,t,r=false){return !!e.value&&A(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(A)||Array.isArray(t.value)&&t.value.some(A)}function Ke(e){return !!e.value&&A(e.value)}function ve(e){return A(e)&&"_validator"in e}function Ve(e){return typeof e.value=="function"?"_validator"in e.value:true}function Ut(e){return A(e)&&"$fields"in e}function st(e){return !!e&&"$rules"in e}function it({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Nt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function kt(e){return A(e)&&"$each"in e}function ut(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!A(n)))return e;if(kt(e)){let n=r?e.$self?.map(l=>({error:l,path:""}))??[]:e.$self??[],a=e.$each?.map(l=>qe(l,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>qe(a,r,[n])).flat()}function qe(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!A(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(kt(e)){let a=n?.length?e.$self?.map(u=>({error:u,path:n.join(".")}))??[]:e.$self??[],l=e.$each?.map((u,c)=>qe(u,t,n?.concat(c.toString())))??[];return a?.concat(l.flat())}else return Object.entries(e).map(([a,l])=>qe(l,t,n?.concat(a))).flat()}function Gt({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:l,$debounce:u,modifiers:c}){let g=effectScope(),p={},d,L=ref(false),h=ref(false),{$pending:P,$valid:C,$metadata:w,$validating:o}=l.trySetRuleStatusRef(`${a}.${r}`);function y(){g=effectScope(),p=g.run(()=>{let v=ref(false),H=ref(false),z=ref(true),J=ref(false),K=ref(false),oe=computed(()=>({$value:n.value,$error:H.value,$dirty:v.value,$pending:J.value,$correct:K.value,$invalid:z.value,$rule:{$valid:C.value,$invalid:!C.value,$pending:P.value},$params:f.value,...w.value})),E=computed(()=>Ve(t)?typeof t.value.active=="function"?t.value.active(oe.value):!!t.value.active:true);function G(S){let M="",R=e?e[r]?.[S]:void 0;if(R&&(typeof R=="function"?M=R(oe.value):M=R),Ve(t)){let k=`_${S}_patched`;R&&!t.value[k]||(typeof t.value[S]=="function"?M=t.value[S](oe.value):M=t.value[S]??"");}return M}let ge=computed(()=>{let S=G("message");return re(S)&&(S="This field is not valid"),S}),Re=computed(()=>G("tooltip")),D=computed(()=>Ve(t)&&t.value.type?t.value.type:r),_=computed(()=>Ve(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:ne(t.value._params??[])),m=computed(()=>`${a}.${D.value}`);return {$active:E,$message:ge,$type:D,$validator:_,$params:f,$path:m,$tooltip:Re,$fieldCorrect:K,$fieldError:H,$fieldDirty:v,$fieldPending:J,$fieldInvalid:z}}),d=watch(p?.$params,()=>{(!c.$silent.value||c.$rewardEarly.value&&p.$fieldError.value)&&Q();});}y();function b(){C.value=true,p.$fieldDirty.value&&(P.value=true);}async function x(){let v=false;try{let H=p.$validator.value;if(typeof H!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let z=H(n.value,...p.$params.value),J=n.value;b();let K;if(z instanceof Promise?K=await z:K=z,n.value!==J)return !0;if(typeof K=="boolean")v=K;else {let{$valid:oe,...E}=K;v=oe,w.value=E;}}catch{v=false;}finally{P.value=false;}return v}let T=We(x,u??200);async function Q(){try{o.value=!0;let v=!1;if(h.value=!0,ve(t.value)&&t.value._async)v=await T();else {let H=p.$validator.value,z=H(n.value,...p.$params.value);if(z 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(z!=null)if(typeof z=="boolean")v=z;else {let{$valid:J,...K}=z;v=J,w.value=K;}}return C.value=v,v}catch{return false}finally{o.value=false,h.value=false;}}function i(){C.value=true,w.value={},P.value=false,o.value=false,y();}function s(){d(),g.stop(),g=effectScope();}return reactive({...p,$pending:P,$valid:C,$metadata:w,$haveAsync:L,$maybePending:h,$validating:o,$parse:Q,$unwatch:s,$watch:y,$reset:i})}function Ce({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:l,options:u,externalErrors:c,schemaErrors:g,schemaMode:p,onUnwatch:d,$isArray:L,initialState:h,shortcuts:P,onValidate:C}){let w=effectScope(),o,y=[],b,x,T,Q,i,s=()=>{};function v(){let $=t.value,U=l.checkRuleDeclEntry(n,$);G.value=Object.fromEntries(Object.entries($).filter(([j])=>j.startsWith("$"))),J(),E.value=Object.fromEntries(Object.entries(t.value).filter(([j])=>!j.startsWith("$")).map(([j,te])=>{if(te){let ie=toRef(()=>te);return [j,Gt({modifiers:{$silent:o.$silent,$rewardEarly:o.$rewardEarly},customMessages:r,rule:ie,ruleKey:j,state:e,path:n,storage:l,$debounce:G.value.$debounce})]}return []}).filter(j=>!!j.length)),o.processShortcuts(),H(),U?.valid!=null&&(o.$dirty.value=l.getDirtyState(n),(o.$dirty.value&&!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s()),l.addRuleDeclEntry(n,$);}function H(){s=o.$debounce.value?We(oe,o.$debounce.value??o.$haveAnyAsyncRule?100:0):oe;}function z(){E.value&&Object.entries(E.value).forEach(([$,U])=>{U.$unwatch();}),T(),i?.(),o.$dirty.value&&l.setDirtyEntry(n,o.$dirty.value),b?.(),x?.(),w.stop(),w=effectScope(),y.forEach($=>$.stop()),y=[],d?.(),Q?.();}function J(){E.value&&Object.entries(E.value).forEach(([$,U])=>{U.$watch();}),o=w.run(()=>{let $=ref(false),U=ref(false),j=computed(()=>$.value),te=computed(()=>G.value.$debounce),ie=computed(()=>G.value.$deepCompare!=null?G.value.$deepCompare:false),Ae=computed(()=>G.value.$lazy!=null?G.value.$lazy:unref(u.lazy)!=null?unref(u.lazy):false),ue=computed(()=>G.value.$rewardEarly!=null?G.value.$rewardEarly:unref(u.rewardEarly)!=null?unref(u.rewardEarly):false),I=computed(()=>G.value.$clearExternalErrorsOnChange!=null?G.value.$clearExternalErrorsOnChange:unref(u.clearExternalErrorsOnChange)!=null?unref(u.clearExternalErrorsOnChange):true),F=computed(()=>ue.value?true:G.value.$silent!=null?G.value.$silent:unref(u.silent)!=null?unref(u.silent):false),O=computed(()=>G.value.$autoDirty!=null?G.value.$autoDirty:unref(u.autoDirty)!=null?unref(u.autoDirty):true),V=computed(()=>Object.entries(E.value).some(([ce,ee])=>ee.$validating)),Me=computed({get:()=>e.value,set(ce){b(),e.value=ce,K();}}),ke=computed(()=>Te.value&&!Se.value&&$.value),$t=computed(()=>it({field:{$rules:E.value,$error:ke.value,$externalErrors:c?.value,$schemaErrors:g?.value}})),St=computed(()=>it({field:{$rules:E.value,$error:ke.value,$externalErrors:c?.value,$schemaErrors:g?.value},silent:true})),et=computed(()=>$.value?h.value instanceof Date&&e.value instanceof Date?tt(h.value).getDate()!==tt(e.value).getDate():h.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(h.value)?!Be(e.value,h.value,G.value.$deepCompare):h.value!==e.value:false),Tt=computed(()=>et.value),ht=computed(()=>Nt({field:{$rules:E.value}})),bt=computed(()=>(F.value||j.value)&&!(Te.value||Se.value)),Se=computed(()=>U.value||!ue.value?Object.entries(E.value).some(([ce,ee])=>ee.$pending):false),Te=computed(()=>c?.value?.length||g?.value?.length?true:Ge.value?false:!ue.value||ue.value&&U.value?Object.entries(E.value).some(([ce,ee])=>!(ee.$valid&&!ee.$maybePending)):false),xt=computed(()=>a),Ge=computed(()=>!!(re(E.value)&&!p)),Et=computed(()=>c?.value?.length||Ge.value?false:$.value&&!re(e.value)&&!V.value&&!Se.value?p?!g?.value?.length:Object.values(E.value).some(ee=>ee.$active)?Object.values(E.value).filter(ee=>ee.$active).every(ee=>ee.$valid):false:false),ur=computed(()=>Object.entries(E.value).some(([ce,ee])=>ee.$haveAsync));function cr(){P?.fields&&Object.entries(P.fields).forEach(([ce,ee])=>{let Dt=effectScope();Ct[ce]=Dt.run(()=>{let It=ref();return watchEffect(()=>{It.value=ee(reactive({$dirty:$,$externalErrors:c?.value??[],$value:e,$silentValue:Me,$rules:E,$error:ke,$pending:Se,$invalid:Te,$correct:Et,$errors:$t,$ready:bt,$silentErrors:St,$anyDirty:j,$tooltips:ht,$name:xt,$inactive:Ge,$edited:et,$anyEdited:Tt}));}),It}),y.push(Dt);});}let Ct={};return watch(Te,ce=>{ce||(U.value=false);}),{$error:ke,$pending:Se,$invalid:Te,$correct:Et,$debounce:te,$deepCompare:ie,$lazy:Ae,$errors:$t,$ready:bt,$silentErrors:St,$rewardEarly:ue,$autoDirty:O,$silent:F,$clearExternalErrorsOnChange:I,$anyDirty:j,$edited:et,$anyEdited:Tt,$name:xt,$haveAnyAsyncRule:ur,$shortcuts:Ct,$validating:V,$tooltips:ht,$dirty:$,triggerPunishment:U,processShortcuts:cr,$silentValue:Me,$inactive:Ge}}),K(),T=watch(o.$dirty,$=>{l.setDirtyEntry(n,$),Object.values(E.value).forEach(U=>{U.$fieldDirty=$;});}),i=watch([o.$error,o.$correct,o.$invalid,o.$pending],()=>{Object.values(E.value).forEach($=>{$.$fieldError=o.$error.value,$.$fieldInvalid=o.$invalid.value,$.$fieldPending=o.$pending.value,$.$fieldCorrect=o.$correct.value;});}),x=watch(o.$invalid,$=>{o.$rewardEarly.value&&!$&&(o.triggerPunishment.value=false);}),Q=watch(o.$haveAnyAsyncRule,H);}function K(){b=watch(e,()=>{o.$autoDirty.value&&!o.$silent.value&&(o.$dirty.value||(o.$dirty.value=true)),t.value instanceof Function&&v(),(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s(),o.$rewardEarly.value!==true&&o.$clearExternalErrorsOnChange.value&&f();},{deep:L?true:He?1:true});}function oe(){Object.values(E.value).forEach($=>{$.$parse();});}let E=ref({}),G=ref({});v();function ge($,U){if(f(),o.$dirty.value=false,o.triggerPunishment.value=false,l.setDirtyEntry(n,false),!U)if($?.toInitialState)e.value=W(h.value);else if($?.toState){let j;typeof $?.toState=="function"?j=$?.toState():j=$?.toState,h.value=W(j),e.value=W(j);}else h.value=A(e.value)?W(e.value):Array.isArray(e.value)?[...e.value]:e.value;$?.clearExternalErrors&&f(),U||Object.entries(E.value).forEach(([j,te])=>{te.$reset();}),!o.$lazy.value&&!o.$silent.value&&!U&&Object.values(E.value).forEach(j=>j.$parse());}function Re($=true,U=false){o.$dirty.value||(o.$dirty.value=true),U&&$?(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s():$&&s();}async function D(){try{if(p)return C?(Re(!1),C()):{valid:!1,data:e.value};let $=e.value;if(o.triggerPunishment.value=!0,!o.$dirty.value)o.$dirty.value=!0;else if(!o.$silent.value&&o.$dirty.value&&!o.$pending.value)return {valid:!o.$error.value,data:$};return p?{valid:!g?.value?.length,data:$}:re(E.value)?{valid:!0,data:$}:{valid:(await Promise.allSettled(Object.entries(E.value).map(([te,ie])=>ie.$parse()))).every(te=>te.status==="fulfilled"?te.value===!0:!1),data:$}}catch{return {valid:false,data:e.value}}}function _($=true){return o.$dirty.value?e.value:$?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!o.$lazy.value&&!o.$dirty.value&&!o.$silent.value&&s();let{$shortcuts:m,$validating:S,$autoDirty:M,$rewardEarly:R,$clearExternalErrorsOnChange:k,$haveAnyAsyncRule:X,$debounce:Y,$lazy:Z,triggerPunishment:pe,...se}=o;return reactive({...se,$externalErrors:c,$value:e,$rules:E,...m,$reset:ge,$touch:Re,$validate:D,$unwatch:z,$watch:J,$extractDirtyFields:_,$clearExternalErrors:f})}function Rt({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:u,rules:c,externalErrors:g,schemaErrors:p,initialState:d,shortcuts:L,fieldName:h,schemaMode:P}){let C=c.$key?c.$key:xe(),w=`${t}.${String(C)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?w=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:C,enumerable:false,configurable:false,writable:false}}));let o=toRef(g?.value??[],r),y=computed(()=>p?.value?.[r]),b=De({state:l,rulesDef:toRef(()=>c),customMessages:u,path:w,storage:a,options:n,externalErrors:o,schemaErrors:y,initialState:d,shortcuts:L,fieldName:h,schemaMode:P});if(b){let x=l.value?.$id;b.$id=x??String(C),a.addArrayStatus(e,b.$id,b);}return b}function zt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:u,schemaErrors:c,schemaMode:g,initialState:p,shortcuts:d,fieldName:L}){let h=effectScope(),P,C=effectScope(),w,o=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let y=ref(),b=ref(e.value),x=ref({}),T,Q,i=ref({}),s=a.getCollectionsEntry(n);w=C.run(()=>({isPrimitiveArray:computed(()=>e.value?.length?Array.isArray(e.value)&&e.value.length?e.value.every(m=>typeof m!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(m=>ve(m)||typeof m=="function"):false:false)})),v(),J();function v(){x.value=Object.fromEntries(Object.entries(t.value).filter(([f])=>f.startsWith("$"))),typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(y.value=xe(),Object.defineProperties(e.value,{$id:{value:y.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(y.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!w.isPrimitiveArray.value?s.value=e.value.filter(f=>typeof f=="object").map((f,m)=>{let{scope:S,unwrapped:M}=ot(t.value.$each,toRef(()=>f),m);S&&o.push(S);let R=toRef(p.value??[],m),k=toRef(u?.value??{},"$each"),X=computed(()=>c?.value?.$each),Y=Rt({$id:y.value,path:n,customMessages:r,rules:M??{},stateValue:toRef(()=>f),index:m,options:l,storage:a,externalErrors:k,schemaErrors:X,initialState:R,shortcuts:d,fieldName:L,schemaMode:g});return Y||null}).filter(f=>!!f):s.value=[],i.value=Ce({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:toRef(u?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:p,shortcuts:d,fieldName:L,schemaMode:g});}function H(){if(Array.isArray(e.value)&&!w.isPrimitiveArray.value){let f=W(s.value);s.value=e.value.filter(m=>typeof m=="object").map((m,S)=>{let M=toRef(()=>m);if(m.$id&&s.value.find(R=>R.$id===m.$id)){let R=a.getArrayStatus(y.value,m.$id);return R?(R.$value=M,R):null}else {let{scope:R,unwrapped:k}=ot(t.value.$each,M,S);R&&o.push(R);let X=toRef(u?.value??{},"$each"),Y=computed(()=>c?.value?.$each??[]),Z=Rt({$id:y.value,path:n,customMessages:r,rules:k??{},stateValue:M,index:S,options:l,storage:a,externalErrors:X,schemaErrors:Y,initialState:toRef(p.value??[],S),shortcuts:d,fieldName:L,schemaMode:g});return Z||null}}).filter(m=>!!m),f.filter(m=>!e.value?.find(S=>m.$id===S.$id)).forEach((m,S)=>{a.deleteArrayStatus(y.value,S.toString());});}else s.value=[];}function z(){T=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?v():H();},{deep:He?1:true,flush:"pre"}),Q=watch(e,()=>{P.$autoDirty.value&&!P.$silent.value&&oe(false,true);},{flush:"pre"});}function J(){z(),h=effectScope(),P=h.run(()=>{let f=computed({get:()=>e.value,set(I){T?.(),Q?.(),e.value=I,z();}}),m=computed(()=>i.value.$dirty&&(!s.value.length||s.value.every(I=>I.$dirty))),S=computed(()=>i.value.$anyDirty||s.value.some(I=>I.$anyDirty)),M=computed(()=>i.value.$invalid||s.value.some(I=>I.$invalid)),R=computed(()=>(re(i.value.$rules)?true:i.value.$correct)&&(!s.value.length||s.value.every(I=>I.$correct||I.$anyDirty&&!I.$invalid))),k=computed(()=>i.value.$error||s.value.some(I=>I.$error)),X=computed(()=>!(M.value||Y.value)),Y=computed(()=>i.value.$pending||s.value.some(I=>I.$pending)),Z=computed(()=>!!s.value.length&&s.value.every(I=>I.$edited)),pe=computed(()=>i.value.$anyEdited||s.value.some(I=>I.$anyEdited)),se=computed(()=>({$self:i.value.$errors,$each:s.value.map(I=>I.$errors)})),$=computed(()=>({$self:i.value.$silentErrors,$each:s.value.map(I=>I.$silentErrors)})),U=computed(()=>x.value.$rewardEarly!=null?x.value.$rewardEarly:unref(l.rewardEarly)!=null?unref(l.rewardEarly):false),j=computed(()=>U.value?true:x.value.$silent!=null?x.value.$silent:unref(l.silent)!=null?unref(l.silent):false),te=computed(()=>x.value.$autoDirty!=null?x.value.$autoDirty:unref(l.autoDirty)!=null?unref(l.autoDirty):true),ie=computed(()=>L);function Ae(){d?.collections&&Object.entries(d?.collections).forEach(([I,F])=>{let O=effectScope();ue[I]=O.run(()=>{let V=ref();return watchEffect(()=>{V.value=F(reactive({$dirty:m,$error:k,$silentValue:f,$pending:Y,$invalid:M,$correct:R,$errors:se,$ready:X,$silentErrors:$,$anyDirty:S,$name:ie,$each:s,$self:i,$value:e,$edited:Z,$anyEdited:pe}));}),V}),o.push(O);});}let ue={};return Ae(),{$dirty:m,$anyDirty:S,$invalid:M,$correct:R,$error:k,$pending:Y,$errors:se,$silentErrors:$,$ready:X,$name:ie,$shortcuts:ue,$silentValue:f,$edited:Z,$anyEdited:pe,$rewardEarly:U,$silent:j,$autoDirty:te}}),w.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function K(){T?.(),i.value&&i.value.$unwatch(),s.value&&s.value.forEach(f=>{"$dirty"in f&&f.$unwatch();}),h.stop(),h=effectScope(),C.stop(),C=effectScope(true),o.forEach(f=>f.stop()),o=[];}function oe(f=true,m=false){i.value.$touch(f,m),s.value.forEach(S=>{S.$touch(f,m);});}function E(f,m){if(K(),!m)if(f?.toInitialState)e.value=W(p.value);else if(f?.toState){let S;typeof f?.toState=="function"?S=f?.toState():S=f?.toState,p.value=W(S),e.value=W(S);}else p.value=W(e.value);f?.clearExternalErrors&&ge(),i.value.$reset(f,m),s.value.forEach(S=>{S.$reset(f,true);}),m||v();}async function G(){let f=e.value;try{return {valid:(await Promise.allSettled([i.value.$validate(),...s.value.map(M=>M.$validate())])).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:f}}catch{return {valid:false,data:f}}}function ge(){i.value.$clearExternalErrors(),s.value.forEach(f=>{f.$clearExternalErrors();});}function Re(f=true){let m=s.value.map(S=>{if(Ut(S))return S.$extractDirtyFields(f)});return f&&m.every(S=>re(S))&&(m=[]),m}let{$shortcuts:D,..._}=P;return reactive({$self:i,..._,...D,$each:s,$value:e,$validate:G,$unwatch:K,$watch:J,$touch:oe,$reset:E,$extractDirtyFields:Re,$clearExternalErrors:ge})}function Je({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:l,rootSchemaErrors:u,validationGroups:c,initialState:g,fieldName:p,...d}){let L=effectScope(),h,P=[],C=null,w=null,o=null,y=null;async function x(D=true){let _=Object.entries(e.value),f=Object.fromEntries(_.filter(([R,k])=>!!k).map(([R,k])=>{if(k){let X=toRef(t.value??{},R),Y=toRef(()=>k),Z=toRef(a?.value??{},R),pe=computed(()=>l?.value?.[R]),se=toRef(g?.value??{},R);return [R,De({state:X,rulesDef:Y,path:r?`${r}.${R}`:R,externalErrors:Z,schemaErrors:pe,initialState:se,fieldName:R,...d})]}return []})),m=Object.fromEntries(Object.entries(unref(a)??{}).filter(([R,k])=>!(R in e.value)&&!!k).map(([R])=>{let k=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:k,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),S=Object.fromEntries(Object.entries(unref(l)??{}).map(([R])=>{let k=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:k,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),M=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(m??{}))&&!(R in(S??{}))).map(([R])=>{let k=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:k,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]}));T.value={...f,...m,...S,...M},D&&s();}let T=d.storage.getFieldsEntry(r);x();function Q(){a&&(o=watch(a,()=>{v(),x();},{deep:true}));}function i(){y=watch(t,()=>{v(),x(),h.$autoDirty.value&&!h.$silent.value&&J(false,true);});}function s(){n&&(C?.(),C=watch(n,()=>{v(),x();},{deep:true,flush:"pre"}),Q()),u&&(w?.(),w=watch(u,()=>{v(),x();},{deep:true,flush:"post"})),i(),h=L.run(()=>{let D=computed({get:()=>t.value,set(F){v(),t.value=F,x(),h.$autoDirty.value&&!h.$silent.value&&J(false,true);}}),_=computed({get:()=>t.value,set(F){v(),t.value=F,x();}}),f=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([F,O])=>O?.$dirty)),m=computed(()=>Object.entries(T.value).some(([F,O])=>O?.$anyDirty)),S=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([F,O])=>O?.$invalid)),M=computed(()=>{let F=Object.entries(T.value).filter(([O,V])=>st(V)?!V.$inactive:true);return F.length?F.every(([O,V])=>d.schemaMode?V.$correct:st(V)?"required"in V.$rules&&V.$rules.required.$active?V?.$correct:!V.$invalid&&!V.$pending:V?.$correct):false}),R=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([F,O])=>O?.$error)),k=computed(()=>unref(d.options.rewardEarly)!=null?unref(d.options.rewardEarly):false),X=computed(()=>unref(d.options.silent)!=null?unref(d.options.silent):!!k.value),Y=computed(()=>unref(d.options.autoDirty)!=null?unref(d.options.autoDirty):true),Z=computed(()=>(X.value||m.value)&&!(S.value||se.value)),pe=ref(false),se=computed(()=>pe.value||Object.entries(T.value).some(([F,O])=>O?.$pending)),$=computed(()=>Object.fromEntries(Object.entries(T.value).map(([F,O])=>[F,O?.$errors]))),U=computed(()=>Object.fromEntries(Object.entries(T.value).map(([F,O])=>[F,O?.$silentErrors]))),j=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([F,O])=>O?.$edited)),te=computed(()=>Object.entries(T.value).some(([F,O])=>O?.$anyEdited)),ie=computed(()=>p);function Ae(){d.shortcuts?.nested&&Object.entries(d.shortcuts.nested).forEach(([F,O])=>{let V=effectScope();I[F]=V.run(()=>{let Me=ref();return watchEffect(()=>{Me.value=O(reactive({$dirty:f,$value:t,$silentValue:_,$error:R,$pending:se,$invalid:S,$correct:M,$ready:Z,$anyDirty:m,$name:ie,$silentErrors:U,$errors:$,$fields:T,$edited:j,$anyEdited:te}));}),Me}),P.push(V);});}let ue=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(T.value)??{}).map(([F,O])=>O.length?[F,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(V=>[V,Pt(O,V)])),...Object.fromEntries(["$errors","$silentErrors"].map(V=>[V,At(O,V)]))}]:[])):{},set(){}}),I={};return Ae(),{$dirty:f,$anyDirty:m,$invalid:S,$correct:M,$error:R,$pending:se,$errors:$,$silentErrors:U,$ready:Z,$name:ie,$shortcuts:I,$groups:ue,$silentValue:_,$edited:j,$anyEdited:te,$localPending:pe,$autoDirty:Y,$silent:X,$value:D}});}function v(){C?.(),o?.(),y?.(),w?.(),P=[],h={},T.value&&Object.entries(T.value).forEach(([D,_])=>{_.$unwatch();});}function H(){Object.entries(T.value).forEach(([D,_])=>{_.$clearExternalErrors();});}function z(D,_){if(o?.(),v(),!_)if(D?.toInitialState)t.value=W({...g.value??{}});else if(D?.toState){let f;typeof D?.toState=="function"?f=D?.toState():f=D?.toState,g.value=W(f),t.value=W(f);}else g.value=W(t.value);Object.values(T.value).forEach(f=>{f.$reset(D,true);}),D?.clearExternalErrors&&H(),Q(),_||x();}function J(D=true,_=false){Object.values(T.value).forEach(f=>{f.$touch(D,_);});}function K(D){return D.filter(([_,f])=>A(f)?!(f&&typeof f=="object"&&"_null"in f)&&!re(f):Array.isArray(f)?f.length:true)}function oe(D=true){let _=Object.entries(T.value).map(([f,m])=>[f,m.$extractDirtyFields(D)]);return D&&(_=K(_)),Object.fromEntries(_)}async function E(){try{if(d.schemaMode)return d.onValidate?(J(!1),h.$localPending.value=!0,d.onValidate()):{valid:!1,data:t.value};{let D=t.value;return {valid:(await Promise.allSettled(Object.values(T.value).map(m=>m.$validate()))).every(m=>m.status==="fulfilled"?m.value.valid===!0:!1),data:D}}}catch{return {valid:false,data:t.value}}finally{h.$localPending.value=false;}}let{$shortcuts:G,$localPending:ge,...Re}=h;return reactive({...Re,...G,$fields:T,$reset:z,$touch:J,$validate:E,$unwatch:v,$watch:s,$clearExternalErrors:H,$extractDirtyFields:oe})}function De({rulesDef:e,...t}){if(_t(e,t.state,t.schemaMode))return zt({rulesDef:e,...t});if(ze(t.state,e)){if(Le(t.state))return Je({rulesDef:e,...t});{let n=effectScope().run(()=>{let u=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{u.value=c;},{deep:true}),watch(u,c=>{t.state.value=c;},{deep:true}),{fakeState:u}}),{state:a,...l}=t;return Je({rulesDef:e,...l,state:n.fakeState})}}else if(Ke(e))return Ce({rulesDef:e,...t})}function Pe({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:l,schemaErrors:u,schemaMode:c=false,onValidate:g}){let p=lt(),d=ref();return ze(n,r)?d.value=Je({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaErrors:u,rootSchemaErrors:u,schemaMode:c,onValidate:g}):Ke(r)&&(d.value=Ce({rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaMode:c,schemaErrors:u,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function Ye(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(l,u,c){let g=isRef(u)?u:typeof u=="function"?void 0:computed(()=>u),p={...n,...c},d=isRef(l)?l:ref(l),L=shallowRef(g??{});typeof u=="function"&&watchEffect(()=>{L.value=u(d),triggerRef(L);});let h=ref(A(d.value)?{...W(d.value)}:W(d.value));return {r$:Pe({scopeRules:L,state:d,options:p,initialState:h,customRules:e,shortcuts:r}).regle}}return a}var Qe=Ye();function Xe(){function e(t,r){return r}return e}var yt=Xe();function Yt({rules:e,modifiers:t,shortcuts:r}){let n=Ye(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=Xe();return {useRegle:n,inferRules:a}}function Qt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},l=()=>({...a.rules?.(),...t?.()}),u=a.modifiers&&r?je(a.modifiers,r):r,c=a.shortcuts&&n?je(a.shortcuts,n):n,g=Ye(l,u,c);g.__config={rules:l,modifiers:u,shortcuts:c};let p=Xe();return {useRegle:g,inferRules:p}}function Ne(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(i=>i.$value):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$value])),set:i=>{r||typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$value=v);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentValue])),set:i=>{typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$silentValue=v);}}),l=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$dirty)}),u=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyDirty)),c=computed(()=>Object.entries(e).some(([i,s])=>s?.$invalid)),g=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$correct||v.$anyDirty&&!v.$invalid)}),p=computed(()=>Object.entries(e).some(([i,s])=>s?.$error)),d=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$ready)}),L=computed(()=>Object.entries(e).some(([i,s])=>s?.$pending)),h=computed(()=>r?Object.entries(e).map(([i,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([i,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentErrors]))),C=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$edited)}),w=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyEdited)),o=computed(()=>r?Object.values(e):e);function y(i){Object.values(e).forEach(s=>{s.$reset(i);});}function b(){Object.values(e).forEach(i=>{i.$touch();});}function x(i=true){return Object.values(e).map(s=>s.$extractDirtyFields(i))}function T(){Object.values(e).forEach(i=>{i.$clearExternalErrors();});}async function Q(){try{let i=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(H=>H.$validate()))).every(H=>H.status==="fulfilled"?H.value.valid===!0:!1),data:i}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:h,$silentErrors:P,$instances:o,$value:n,$dirty:l,$anyDirty:u,$invalid:c,$correct:g,$error:p,$pending:L,$ready:d,$edited:C,$anyEdited:w,$reset:y,$touch:b,$validate:Q,$extractDirtyFields:x,$clearExternalErrors:T})}function Zt(e,t){function r(n){let a=computed(()=>toValue(n));c();let l=ref(g(e.value)),u=reactive({r$:l});function c(){a.value&&!e.value[a.value]&&(e.value[a.value]={});}watch(a,c),watch(e,p=>{l.value=g(p);},{deep:true});function g(p){if(a.value){let d=p[a.value]??{};return Ne(d,!t.asRecord)}else return Ne(p["~~global"]??{},!t.asRecord)}return {r$:u.r$}}return {useCollectScope:r}}function rr(e,t){let r=t??Qe;return {useScopedRegle:(a,l,u)=>{let{namespace:c,scopeKey:g,...p}=u??{};r.__config??={};let d=computed(()=>toValue(c)),L=ref(`${Object.keys(e.value).length+1}-${xe()}`),h=computed(()=>u?.scopeKey??`instance-${L.value}`),{r$:P}=r(a,l,p);w(),Ft(C),watch(d,(o,y)=>{C(y),w();}),getCurrentInstance()&&onMounted(()=>{let o=getCurrentInstance();typeof window<"u"&&o?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(o?.proxy?.$el?.parentElement)&&C();});function C(o){let y=o??d.value;y?e.value[y]&&delete e.value[y][h.value]:e.value["~~global"][h.value]&&delete e.value["~~global"][h.value];}function w(){d.value?(e.value[d.value]||(e.value[d.value]={}),e.value[d.value][h.value]=P):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][h.value]=P);}return {r$:P,dispose:C,register:w}}}}function Ze(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Vt(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=rr(r,e?.customUseRegle),{useCollectScope:a}=Zt(r,{asRecord:e?.asRecord});return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:mt,useScopedRegle:gt}=Ze();function lr(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let l=r.find(u=>{if(u[t]&&"literal"in u[t]){let c=u[t].literal;if(ve(c))return unref(c._params?.[0])===n.value}});if(l)return l;{let u=r.find(c=>A(c[t])&&!Object.keys(c[t]).some(g=>g==="literal"));return u||{}}})}function vt(e,t,r){return A(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function or(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),vt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function sr(e){return e}function ir(e,t){return r=>je({...e},t(r))}
2
+ export{rt as InternalRuleType,at as createRule,Ze as createScopedUseRegle,lr as createVariant,Yt as defineRegleConfig,sr as defineRules,Qt as extendRegleConfig,ut as flatErrors,yt as inferRules,Ne as mergeRegles,vt as narrowVariant,ir as refineRules,ne as unwrapRuleParameters,mt as useCollectScope,Qe as useRegle,Pe as useRootStorage,gt as useScopedRegle,or as variantToRef};
@@ -2,6 +2,11 @@ import { effectScope, ref, computed, toValue, reactive, watch, getCurrentInstanc
2
2
 
3
3
  // src/core/createRule/defineRuleProcessors.ts
4
4
 
5
+ // ../shared/utils/isFile.ts
6
+ function isFile(value) {
7
+ return value?.constructor.name == "File" || value?.constructor.name == "FileList";
8
+ }
9
+
5
10
  // ../shared/utils/isEmpty.ts
6
11
  function isEmpty(value, considerEmptyArrayInvalid = true) {
7
12
  if (value === void 0 || value === null) {
@@ -9,7 +14,7 @@ function isEmpty(value, considerEmptyArrayInvalid = true) {
9
14
  }
10
15
  if (value instanceof Date) {
11
16
  return isNaN(value.getTime());
12
- } else if (value.constructor.name == "File" || value.constructor.name == "FileList") {
17
+ } else if (isFile(value)) {
13
18
  return value.size <= 0;
14
19
  } else if (Array.isArray(value)) {
15
20
  if (considerEmptyArrayInvalid) {
@@ -126,6 +131,46 @@ function debounce(func, wait, immediate) {
126
131
  return debouncedFn;
127
132
  }
128
133
 
134
+ // ../shared/utils/isEqual.ts
135
+ function isEqual(a, b, deep = false, firstDeep = true) {
136
+ if (a === b) return true;
137
+ if (a && b && typeof a == "object" && typeof b == "object") {
138
+ if (a.constructor !== b.constructor) return false;
139
+ var length, i, keys;
140
+ if (Array.isArray(a) && Array.isArray(b)) {
141
+ length = a.length;
142
+ if (length != b.length) return false;
143
+ if (firstDeep || !firstDeep && deep) {
144
+ for (i = length; i-- !== 0; ) {
145
+ if (!isEqual(a[i], b[i], deep, false)) {
146
+ return false;
147
+ }
148
+ }
149
+ }
150
+ return true;
151
+ }
152
+ if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
153
+ if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
154
+ keys = Object.keys(a);
155
+ length = keys.length;
156
+ if (length !== Object.keys(b).length) return false;
157
+ for (i = length; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
158
+ for (i = length; i-- !== 0; ) {
159
+ var key = keys[i];
160
+ if (isObject(a) && isObject(b)) {
161
+ if (firstDeep || !firstDeep && deep) {
162
+ if (!isEqual(a[key], b[key], deep, false)) {
163
+ return false;
164
+ }
165
+ }
166
+ }
167
+ return true;
168
+ }
169
+ return true;
170
+ }
171
+ return a !== a && b !== b;
172
+ }
173
+
129
174
  // src/types/rules/rule.internal.types.ts
130
175
  var InternalRuleType = {
131
176
  Inline: "__inline",
@@ -889,6 +934,12 @@ function createReactiveFieldStatus({
889
934
  const $debounce2 = computed(() => {
890
935
  return $localOptions.value.$debounce;
891
936
  });
937
+ const $deepCompare = computed(() => {
938
+ if ($localOptions.value.$deepCompare != null) {
939
+ return $localOptions.value.$deepCompare;
940
+ }
941
+ return false;
942
+ });
892
943
  const $lazy2 = computed(() => {
893
944
  if ($localOptions.value.$lazy != null) {
894
945
  return $localOptions.value.$lazy;
@@ -971,12 +1022,10 @@ function createReactiveFieldStatus({
971
1022
  if ($dirty.value) {
972
1023
  if (initialState.value instanceof Date && state.value instanceof Date) {
973
1024
  return toDate(initialState.value).getDate() !== toDate(state.value).getDate();
974
- }
975
- if (initialState.value == null) {
1025
+ } else if (initialState.value == null) {
976
1026
  return !!state.value;
977
- }
978
- if (Array.isArray(state.value) && Array.isArray(initialState.value)) {
979
- return state.value.length !== initialState.value.length;
1027
+ } else if (Array.isArray(state.value) && Array.isArray(initialState.value)) {
1028
+ return !isEqual(state.value, initialState.value, $localOptions.value.$deepCompare);
980
1029
  }
981
1030
  return initialState.value !== state.value;
982
1031
  }
@@ -1095,6 +1144,7 @@ function createReactiveFieldStatus({
1095
1144
  $invalid,
1096
1145
  $correct,
1097
1146
  $debounce: $debounce2,
1147
+ $deepCompare,
1098
1148
  $lazy: $lazy2,
1099
1149
  $errors,
1100
1150
  $ready,
@@ -1180,7 +1230,7 @@ function createReactiveFieldStatus({
1180
1230
  storage.setDirtyEntry(path, false);
1181
1231
  if (!fromParent) {
1182
1232
  if (options2?.toInitialState) {
1183
- state.value = cloneDeep(initialState);
1233
+ state.value = cloneDeep(initialState.value);
1184
1234
  } else if (options2?.toState) {
1185
1235
  let newInitialState;
1186
1236
  if (typeof options2?.toState === "function") {
@@ -1391,6 +1441,9 @@ function createReactiveCollectionStatus({
1391
1441
  const $eachStatus = storage.getCollectionsEntry(path);
1392
1442
  immediateScopeState = immediateScope.run(() => {
1393
1443
  const isPrimitiveArray = computed(() => {
1444
+ if (!state.value?.length) {
1445
+ return false;
1446
+ }
1394
1447
  if (Array.isArray(state.value) && state.value.length) {
1395
1448
  return state.value.every((s) => typeof s !== "object");
1396
1449
  } else if (rulesDef.value.$each && !(rulesDef.value.$each instanceof Function)) {
@@ -1749,7 +1802,7 @@ function createReactiveCollectionStatus({
1749
1802
  if (options2?.clearExternalErrors) {
1750
1803
  $clearExternalErrors();
1751
1804
  }
1752
- $selfStatus.value.$reset();
1805
+ $selfStatus.value.$reset(options2, fromParent);
1753
1806
  $eachStatus.value.forEach(($each) => {
1754
1807
  $each.$reset(options2, true);
1755
1808
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.2.0-beta.8",
3
+ "version": "1.2.1",
4
4
  "description": "Headless form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",