@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.
- package/dist/regle-core.d.ts +107 -14
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +61 -8
- package/package.json +1 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -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[]) =>
|
|
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
|
|
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
|
-
} &
|
|
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
|
|
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[]> |
|
|
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
|
-
} &
|
|
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 };
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -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{
|
|
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};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
});
|