@regle/core 1.8.6 → 1.9.0-beta.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 +140 -26
- package/dist/regle-core.js +192 -50
- package/dist/regle-core.min.js +1 -1
- package/package.json +4 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -1251,7 +1251,7 @@ type CollectionRegleBehaviourOptions = FieldRegleBehaviourOptions & {
|
|
|
1251
1251
|
};
|
|
1252
1252
|
type ResolvedRegleBehaviourOptions = DeepMaybeRef<RequiredDeep<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Record<string, any>, Record<string, any>, Record<string, any[]>>;
|
|
1253
1253
|
type ShortcutCommonFn<T extends Record<string, any>> = {
|
|
1254
|
-
[x: string]: (element: OmitByType<T, Function>) => unknown;
|
|
1254
|
+
[x: string]: (element: Omit<OmitByType<T, Function>, '~standard'>) => unknown;
|
|
1255
1255
|
};
|
|
1256
1256
|
type RegleShortcutDefinition<TCustomRules extends Record<string, any> = {}> = {
|
|
1257
1257
|
/**
|
|
@@ -1351,6 +1351,28 @@ type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules exte
|
|
|
1351
1351
|
valid: true;
|
|
1352
1352
|
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? 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> : unknown;
|
|
1353
1353
|
};
|
|
1354
|
+
type RegleNestedResult<Data extends Record<string, any> | unknown, TRules extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = RegleResult<Data, TRules> & ({
|
|
1355
|
+
valid: false;
|
|
1356
|
+
issues: RegleIssuesTree<Data>;
|
|
1357
|
+
errors: RegleErrorTree<Data>;
|
|
1358
|
+
} | {
|
|
1359
|
+
valid: true;
|
|
1360
|
+
issues: EmptyObject;
|
|
1361
|
+
errors: EmptyObject;
|
|
1362
|
+
});
|
|
1363
|
+
type RegleCollectionResult<Data extends any[], TRules extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = RegleResult<Data, TRules> & ({
|
|
1364
|
+
valid: false;
|
|
1365
|
+
issues: RegleCollectionErrors<Data, true>;
|
|
1366
|
+
errors: RegleCollectionErrors<Data>;
|
|
1367
|
+
} | {
|
|
1368
|
+
valid: true;
|
|
1369
|
+
issues: EmptyObject;
|
|
1370
|
+
errors: EmptyObject;
|
|
1371
|
+
});
|
|
1372
|
+
type RegleFieldResult<Data extends any, TRules extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = RegleResult<Data, TRules> & {
|
|
1373
|
+
issues: RegleFieldIssue<TRules>[];
|
|
1374
|
+
errors: string[];
|
|
1375
|
+
};
|
|
1354
1376
|
/**
|
|
1355
1377
|
* Infer safe output from any `r$` instance
|
|
1356
1378
|
*
|
|
@@ -1362,6 +1384,8 @@ type InferSafeOutput<TRegle extends MaybeRef<RegleRoot<{}, any, any, any>> | May
|
|
|
1362
1384
|
type $InternalRegleResult = {
|
|
1363
1385
|
valid: boolean;
|
|
1364
1386
|
data: any;
|
|
1387
|
+
errors: $InternalRegleErrorTree | $InternalRegleCollectionErrors | string[];
|
|
1388
|
+
issues: $InternalRegleIssuesTree | $InternalRegleCollectionIssues | RegleFieldIssue[];
|
|
1365
1389
|
};
|
|
1366
1390
|
type DeepSafeFormState<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Record<string, any>, CustomRulesDeclarationTree> | RegleFormPropertyType<any, any> | undefined> = [unknown] extends [TState] ? {} : TRules extends undefined ? TState : TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> ? Prettify<{ [K in keyof TState as IsPropertyOutputRequired<TState[K], TRules[K]> extends false ? K : never]?: SafeProperty<TState[K], TRules[K]> extends MaybeInput<infer M> ? MaybeOutput<M> : SafeProperty<TState[K], TRules[K]> } & { [K in keyof TState as IsPropertyOutputRequired<TState[K], TRules[K]> extends false ? never : K]-?: unknown extends SafeProperty<TState[K], TRules[K]> ? unknown : NonNullable<SafeProperty<TState[K], TRules[K]>> }> : TState;
|
|
1367
1391
|
type FieldHaveRequiredRule<TRule extends RegleFormPropertyType<any, any> | undefined = never> = TRule extends MaybeRef<RegleRuleDecl<any, any>> ? [unknown] extends UnwrapRef<TRule>['required'] ? NonNullable<UnwrapRef<TRule>['literal']> extends RegleRuleDefinition<any, any[], any, any, any, any> ? true : false : NonNullable<UnwrapRef<TRule>['required']> extends UnwrapRef<TRule>['required'] ? UnwrapRef<TRule>['required'] extends RegleRuleDefinition<any, infer Params, any, any, any, any> ? Params extends never[] ? true : false : false : false : false;
|
|
@@ -1501,6 +1525,64 @@ declare function useRootStorage({
|
|
|
1501
1525
|
regle: $InternalRegleStatusType | undefined;
|
|
1502
1526
|
};
|
|
1503
1527
|
//#endregion
|
|
1528
|
+
//#region ../../node_modules/.pnpm/@standard-schema+spec@1.0.0/node_modules/@standard-schema/spec/dist/index.d.ts
|
|
1529
|
+
/** The Standard Schema interface. */
|
|
1530
|
+
interface StandardSchemaV1<Input = unknown, Output = Input> {
|
|
1531
|
+
/** The Standard Schema properties. */
|
|
1532
|
+
readonly "~standard": StandardSchemaV1.Props<Input, Output>;
|
|
1533
|
+
}
|
|
1534
|
+
declare namespace StandardSchemaV1 {
|
|
1535
|
+
/** The Standard Schema properties interface. */
|
|
1536
|
+
export interface Props<Input = unknown, Output = Input> {
|
|
1537
|
+
/** The version number of the standard. */
|
|
1538
|
+
readonly version: 1;
|
|
1539
|
+
/** The vendor name of the schema library. */
|
|
1540
|
+
readonly vendor: string;
|
|
1541
|
+
/** Validates unknown input values. */
|
|
1542
|
+
readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
|
|
1543
|
+
/** Inferred types associated with the schema. */
|
|
1544
|
+
readonly types?: Types<Input, Output> | undefined;
|
|
1545
|
+
}
|
|
1546
|
+
/** The result interface of the validate function. */
|
|
1547
|
+
export type Result<Output> = SuccessResult<Output> | FailureResult;
|
|
1548
|
+
/** The result interface if validation succeeds. */
|
|
1549
|
+
export interface SuccessResult<Output> {
|
|
1550
|
+
/** The typed output value. */
|
|
1551
|
+
readonly value: Output;
|
|
1552
|
+
/** The non-existent issues. */
|
|
1553
|
+
readonly issues?: undefined;
|
|
1554
|
+
}
|
|
1555
|
+
/** The result interface if validation fails. */
|
|
1556
|
+
export interface FailureResult {
|
|
1557
|
+
/** The issues of failed validation. */
|
|
1558
|
+
readonly issues: ReadonlyArray<Issue>;
|
|
1559
|
+
}
|
|
1560
|
+
/** The issue interface of the failure output. */
|
|
1561
|
+
export interface Issue {
|
|
1562
|
+
/** The error message of the issue. */
|
|
1563
|
+
readonly message: string;
|
|
1564
|
+
/** The path of the issue, if any. */
|
|
1565
|
+
readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
|
|
1566
|
+
}
|
|
1567
|
+
/** The path segment interface of the issue. */
|
|
1568
|
+
export interface PathSegment {
|
|
1569
|
+
/** The key representing a path segment. */
|
|
1570
|
+
readonly key: PropertyKey;
|
|
1571
|
+
}
|
|
1572
|
+
/** The Standard Schema types interface. */
|
|
1573
|
+
export interface Types<Input = unknown, Output = Input> {
|
|
1574
|
+
/** The input type of the schema. */
|
|
1575
|
+
readonly input: Input;
|
|
1576
|
+
/** The output type of the schema. */
|
|
1577
|
+
readonly output: Output;
|
|
1578
|
+
}
|
|
1579
|
+
/** Infers the input type of a Standard Schema. */
|
|
1580
|
+
export type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["input"];
|
|
1581
|
+
/** Infers the output type of a Standard Schema. */
|
|
1582
|
+
export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
|
|
1583
|
+
export {};
|
|
1584
|
+
}
|
|
1585
|
+
//#endregion
|
|
1504
1586
|
//#region src/core/useRegle/useErrors.d.ts
|
|
1505
1587
|
/**
|
|
1506
1588
|
* Converts a nested $errors object to a flat array of string errors
|
|
@@ -1509,14 +1591,40 @@ declare function useRootStorage({
|
|
|
1509
1591
|
*/
|
|
1510
1592
|
declare function flatErrors(errors: $InternalRegleErrors, options: {
|
|
1511
1593
|
includePath: true;
|
|
1512
|
-
}):
|
|
1513
|
-
error: string;
|
|
1514
|
-
path: string;
|
|
1515
|
-
}[];
|
|
1594
|
+
}): StandardSchemaV1.Issue[];
|
|
1516
1595
|
declare function flatErrors(errors: $InternalRegleErrors, options?: {
|
|
1517
1596
|
includePath?: false;
|
|
1518
1597
|
}): string[];
|
|
1519
1598
|
//#endregion
|
|
1599
|
+
//#region src/core/useRegle/useRules.d.ts
|
|
1600
|
+
type useRulesFnOptions<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState = InferInput<TRules>> = Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<JoinDiscriminatedUnions<TState extends Record<string, any> ? Unwrap<TState> : {}>, TState extends Record<string, any> ? (TRules extends Record<string, any> ? TRules : {}) : {}, TValidationGroups>;
|
|
1601
|
+
interface useRulesFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
1602
|
+
<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends RegleRuleDecl<NonNullable<TState>, Partial<AllRulesDeclarations> & TCustomRules>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState extends Record<string, any> = InferInput<TRules>>(rulesFactory: TState extends Record<string, any> ? MaybeRef<TRules> | ((...args: any[]) => TRules) : {}, options?: useRulesFnOptions<TRules, TValidationGroups, TState>): NonNullable<TState> extends PrimitiveTypes ? Raw<RegleFieldStatus<NonNullable<TState>, TDecl, TShortcuts>> & StandardSchemaV1<TState> : Raw<RegleRoot<TState extends Record<string, any> ? Unwrap<TState> : {}, TRules extends Record<string, any> ? TRules : {}, TValidationGroups, TShortcuts>> & StandardSchemaV1<TState>;
|
|
1603
|
+
__config?: {
|
|
1604
|
+
rules?: () => CustomRulesDeclarationTree;
|
|
1605
|
+
modifiers?: RegleBehaviourOptions;
|
|
1606
|
+
shortcuts?: TShortcuts;
|
|
1607
|
+
};
|
|
1608
|
+
}
|
|
1609
|
+
/**
|
|
1610
|
+
* useRules is a clone of useRegle, without the need to provide a state.
|
|
1611
|
+
*
|
|
1612
|
+
* It accepts the following inputs:
|
|
1613
|
+
*
|
|
1614
|
+
* @param rules - Your rules object
|
|
1615
|
+
* @param modifiers - Customize regle behaviour
|
|
1616
|
+
*
|
|
1617
|
+
* ```ts
|
|
1618
|
+
* import { useRules } from '@regle/core';
|
|
1619
|
+
import { required } from '@regle/rules';
|
|
1620
|
+
|
|
1621
|
+
const { r$ } = useRules({
|
|
1622
|
+
email: { required }
|
|
1623
|
+
})
|
|
1624
|
+
* ```
|
|
1625
|
+
*/
|
|
1626
|
+
declare const useRules: useRulesFn<Partial<AllRulesDeclarations>, RegleShortcutDefinition<any>>;
|
|
1627
|
+
//#endregion
|
|
1520
1628
|
//#region src/types/utils/props.types.d.ts
|
|
1521
1629
|
/**
|
|
1522
1630
|
* Infer type of the `r$` of any function returning a regle instance
|
|
@@ -1602,7 +1710,7 @@ type HasNamedKeys<T> = IsUnion<T> extends true ? ProcessHasNamedKeys<LazyJoinDis
|
|
|
1602
1710
|
type ProcessHasNamedKeys<T> = { [K in keyof NonNullable<T>]: K extends string ? (string extends K ? never : K) : never }[keyof NonNullable<T>] extends never ? false : true;
|
|
1603
1711
|
//#endregion
|
|
1604
1712
|
//#region src/types/utils/infer.types.d.ts
|
|
1605
|
-
type InferInput<TRules extends MaybeRef<ReglePartialRuleTree<Record<string, any>, any>> | ((state: any) => ReglePartialRuleTree<Record<string, any>, any>)
|
|
1713
|
+
type InferInput<TRules extends MaybeRef<ReglePartialRuleTree<Record<string, any>, any>> | ((state: any) => ReglePartialRuleTree<Record<string, any>, any>) | MaybeRef<StandardSchemaV1<any>>, TMarkMaybe extends boolean = true> = TRules extends MaybeRef<StandardSchemaV1<infer State>> ? State : IsUnion$1<UnwrapSimple<TRules>> extends true ? InferTupleUnionInput<UnionToTuple<UnwrapSimple<TRules>>>[number] : TMarkMaybe extends true ? Prettify<{ [K in keyof UnwrapSimple<TRules> as UnwrapSimple<TRules>[K] extends MaybeRef<RegleRuleDecl<any, any>> ? K : never]?: ProcessInputChildren<UnwrapSimple<TRules>[K], TMarkMaybe> } & { [K in keyof UnwrapSimple<TRules> as UnwrapSimple<TRules>[K] extends MaybeRef<RegleRuleDecl<any, any>> ? never : K]: ProcessInputChildren<UnwrapSimple<TRules>[K], TMarkMaybe> }> : Prettify<{ [K in keyof UnwrapSimple<TRules>]: ProcessInputChildren<UnwrapSimple<TRules>[K], TMarkMaybe> }>;
|
|
1606
1714
|
type ProcessInputChildren<TRule extends unknown, TMarkMaybe extends boolean> = TRule extends {
|
|
1607
1715
|
$each: RegleCollectionEachRules<any, any>;
|
|
1608
1716
|
} ? ExtractFromGetter<TRule['$each']> extends ReglePartialRuleTree<any, any> ? InferInput<ExtractFromGetter<TRule['$each']>, TMarkMaybe>[] : any[] : TRule extends MaybeRef<RegleRuleDecl<any, any>> ? [ExtractTypeFromRules<UnwrapRef<TRule>>] extends [never] ? unknown : ExtractTypeFromRules<UnwrapRef<TRule>> : TRule extends ReglePartialRuleTree<any, any> ? InferInput<TRule, TMarkMaybe> : string;
|
|
@@ -1940,7 +2048,7 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
1940
2048
|
/** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
1941
2049
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
1942
2050
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
1943
|
-
$validate: () => Promise<
|
|
2051
|
+
$validate: (forceValues?: JoinDiscriminatedUnions<TState> extends EmptyObject ? any : HasNamedKeys<JoinDiscriminatedUnions<TState>> extends true ? IsUnknown<JoinDiscriminatedUnions<TState>> extends true ? any : JoinDiscriminatedUnions<TState> : any) => Promise<RegleNestedResult<JoinDiscriminatedUnions<TState>, TRules>>;
|
|
1944
2052
|
} & ProcessNestedFields<TState, TRules, TShortcuts> & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> });
|
|
1945
2053
|
/**
|
|
1946
2054
|
* @internal
|
|
@@ -1954,7 +2062,7 @@ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
|
1954
2062
|
readonly $errors: Record<string, $InternalRegleErrors>;
|
|
1955
2063
|
readonly $silentErrors: Record<string, $InternalRegleErrors>;
|
|
1956
2064
|
$extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
|
|
1957
|
-
$validate: () => Promise<$InternalRegleResult>;
|
|
2065
|
+
$validate: (forceValues?: any) => Promise<$InternalRegleResult>;
|
|
1958
2066
|
}
|
|
1959
2067
|
/**
|
|
1960
2068
|
* @public
|
|
@@ -2016,7 +2124,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
2016
2124
|
/** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
2017
2125
|
$extractDirtyFields: (filterNullishValues?: boolean) => MaybeOutput<TState>;
|
|
2018
2126
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
2019
|
-
$validate: () => Promise<
|
|
2127
|
+
$validate: (forceValues?: IsUnknown<TState> extends true ? any : TState) => Promise<RegleFieldResult<TState, TRules>>;
|
|
2020
2128
|
/** This is reactive tree containing all the declared rules of your field. To know more about the rule properties check the rules properties section */
|
|
2021
2129
|
readonly $rules: ComputeFieldRules<TState, TRules>;
|
|
2022
2130
|
} & ([TShortcuts['fields']] extends [never] ? {} : { [K in keyof TShortcuts['fields']]: ReturnType<NonNullable<TShortcuts['fields']>[K]> });
|
|
@@ -2036,12 +2144,12 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
|
2036
2144
|
readonly $issues: RegleFieldIssue[];
|
|
2037
2145
|
readonly $isDebouncing: boolean;
|
|
2038
2146
|
$extractDirtyFields: (filterNullishValues?: boolean) => any;
|
|
2039
|
-
$validate: () => Promise<$InternalRegleResult>;
|
|
2147
|
+
$validate: (forceValues?: any) => Promise<$InternalRegleResult>;
|
|
2040
2148
|
}
|
|
2041
2149
|
/**
|
|
2042
2150
|
* @public
|
|
2043
2151
|
*/
|
|
2044
|
-
interface RegleCommonStatus<TValue = any> {
|
|
2152
|
+
interface RegleCommonStatus<TValue = any> extends StandardSchemaV1<TValue> {
|
|
2045
2153
|
/** Indicates whether the field is invalid. It becomes true if any associated rules return false. */
|
|
2046
2154
|
readonly $invalid: boolean;
|
|
2047
2155
|
/**
|
|
@@ -2196,7 +2304,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
2196
2304
|
/** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
2197
2305
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
2198
2306
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
2199
|
-
$validate: () => Promise<
|
|
2307
|
+
$validate: (value?: JoinDiscriminatedUnions<TState>) => Promise<RegleCollectionResult<TState, JoinDiscriminatedUnions<TRules>>>;
|
|
2200
2308
|
} & ([TShortcuts['collections']] extends [never] ? {} : { [K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]> });
|
|
2201
2309
|
/**
|
|
2202
2310
|
* @internal
|
|
@@ -2210,7 +2318,7 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
|
|
|
2210
2318
|
readonly $silentErrors: $InternalRegleCollectionErrors;
|
|
2211
2319
|
readonly $externalErrors?: string[];
|
|
2212
2320
|
$extractDirtyFields: (filterNullishValues?: boolean) => any[];
|
|
2213
|
-
$validate: () => Promise<$InternalRegleResult>;
|
|
2321
|
+
$validate: (forceValues?: any) => Promise<$InternalRegleResult>;
|
|
2214
2322
|
}
|
|
2215
2323
|
//#endregion
|
|
2216
2324
|
//#region src/types/rules/rule.errors.types.d.ts
|
|
@@ -2254,7 +2362,7 @@ type SuperCompatibleRegleRoot = SuperCompatibleRegleStatus & {
|
|
|
2254
2362
|
$groups?: {
|
|
2255
2363
|
[x: string]: RegleValidationGroupOutput;
|
|
2256
2364
|
};
|
|
2257
|
-
$validate: () => Promise<SuperCompatibleRegleResult>;
|
|
2365
|
+
$validate: (...args: any[]) => Promise<SuperCompatibleRegleResult>;
|
|
2258
2366
|
};
|
|
2259
2367
|
type SuperCompatibleRegleResult = $InternalRegleResult;
|
|
2260
2368
|
type SuperCompatibleRegleStatus = {
|
|
@@ -2363,6 +2471,7 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
2363
2471
|
}): {
|
|
2364
2472
|
useRegle: useRegleFn<TCustomRules, TShortcuts>;
|
|
2365
2473
|
inferRules: inferRulesFn<TCustomRules>;
|
|
2474
|
+
useRules: useRulesFn<TCustomRules, TShortcuts>;
|
|
2366
2475
|
};
|
|
2367
2476
|
/**
|
|
2368
2477
|
* Extend an already created custom `useRegle` (as the first parameter)
|
|
@@ -2399,10 +2508,12 @@ type MergedRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TVal
|
|
|
2399
2508
|
readonly $errors: { [K in keyof TRegles]: TRegles[K]['$errors'] };
|
|
2400
2509
|
/** Collection of all the error messages, collected for all children properties. */
|
|
2401
2510
|
readonly $silentErrors: { [K in keyof TRegles]: TRegles[K]['$silentErrors'] };
|
|
2511
|
+
readonly $issues: { [K in keyof TRegles]: TRegles[K]['$issues'] };
|
|
2512
|
+
readonly $silentIssues: { [K in keyof TRegles]: TRegles[K]['$silentIssues'] };
|
|
2402
2513
|
/** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
2403
2514
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TValue>;
|
|
2404
2515
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
2405
|
-
$validate: () => Promise<MergedReglesResult<TRegles>>;
|
|
2516
|
+
$validate: (forceValues?: TRegles['$value']) => Promise<MergedReglesResult<TRegles>>;
|
|
2406
2517
|
};
|
|
2407
2518
|
type MergedScopedRegles<TValue extends Record<string, unknown>[] = Record<string, unknown>[]> = Omit<MergedRegles<Record<string, SuperCompatibleRegleRoot>, TValue>, '$instances' | '$errors' | '$silentErrors' | '$value' | '$silentValue' | '$validate'> & {
|
|
2408
2519
|
/** Array of scoped Regles instances */
|
|
@@ -2413,10 +2524,16 @@ type MergedScopedRegles<TValue extends Record<string, unknown>[] = Record<string
|
|
|
2413
2524
|
readonly $errors: RegleValidationErrors<Record<string, unknown>>[];
|
|
2414
2525
|
/** Collection of all registered Regles instances silent errors */
|
|
2415
2526
|
readonly $silentErrors: RegleValidationErrors<Record<string, unknown>>[];
|
|
2527
|
+
/** Collection of all registered Regles instances issues */
|
|
2528
|
+
readonly $issues: RegleValidationErrors<Record<string, unknown>, false, true>[];
|
|
2529
|
+
/** Collection of all registered Regles instances silent issues */
|
|
2530
|
+
readonly $silentIssues: RegleValidationErrors<Record<string, unknown>, false, true>[];
|
|
2416
2531
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
2417
|
-
$validate: () => Promise<{
|
|
2532
|
+
$validate: (forceValues?: TValue) => Promise<{
|
|
2418
2533
|
valid: boolean;
|
|
2419
2534
|
data: TValue;
|
|
2535
|
+
errors: RegleValidationErrors<Record<string, unknown>>[];
|
|
2536
|
+
issues: RegleValidationErrors<Record<string, unknown>>[];
|
|
2420
2537
|
}>;
|
|
2421
2538
|
};
|
|
2422
2539
|
type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>> = {
|
|
@@ -2424,11 +2541,15 @@ type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>
|
|
|
2424
2541
|
data: { [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
|
|
2425
2542
|
valid: false;
|
|
2426
2543
|
}>['data'] };
|
|
2544
|
+
errors: { [K in keyof TRegles]: TRegles[K]['$errors'] };
|
|
2545
|
+
issues: { [K in keyof TRegles]: TRegles[K]['$issues'] };
|
|
2427
2546
|
} | {
|
|
2428
2547
|
valid: true;
|
|
2429
2548
|
data: { [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
|
|
2430
2549
|
valid: true;
|
|
2431
2550
|
}>['data'] };
|
|
2551
|
+
errors: EmptyObject;
|
|
2552
|
+
issues: EmptyObject;
|
|
2432
2553
|
};
|
|
2433
2554
|
declare function mergeRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TScoped extends boolean = false>(regles: TRegles, _scoped?: TScoped): TScoped extends false ? MergedRegles<TRegles> : MergedScopedRegles;
|
|
2434
2555
|
//#endregion
|
|
@@ -2515,14 +2636,9 @@ declare function createVariant<TForm extends Record<string, any>, TDiscriminant
|
|
|
2515
2636
|
*/
|
|
2516
2637
|
declare function narrowVariant<TRoot extends {
|
|
2517
2638
|
[x: string]: unknown;
|
|
2518
|
-
$fields: {
|
|
2519
|
-
[x: string]: unknown;
|
|
2520
|
-
};
|
|
2521
2639
|
}, const TKey extends keyof TRoot, const TValue extends (LazyJoinDiscriminatedUnions<Exclude<TRoot[TKey], RegleCollectionStatus<any, any, any> | RegleStatus<any, any, any>>> extends {
|
|
2522
2640
|
$value: infer V;
|
|
2523
|
-
} ? V : unknown)>(root: TRoot, discriminantKey: TKey, discriminantValue: TValue): root is Extract<TRoot, { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> }
|
|
2524
|
-
$fields: Extract<TRoot['$fields'], { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> }>;
|
|
2525
|
-
};
|
|
2641
|
+
} ? V : unknown)>(root: TRoot, discriminantKey: TKey, discriminantValue: TValue): root is Extract<TRoot, { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> }>;
|
|
2526
2642
|
/**
|
|
2527
2643
|
* Narrow a nested variant root to a reactive reference
|
|
2528
2644
|
*
|
|
@@ -2534,9 +2650,7 @@ declare function narrowVariant<TRoot extends {
|
|
|
2534
2650
|
*/
|
|
2535
2651
|
declare function variantToRef<TRoot extends RegleStatus<{}, any, any>, const TKey extends keyof TRoot['$fields'], const TValue extends (LazyJoinDiscriminatedUnions<Exclude<TRoot['$fields'][TKey], RegleCollectionStatus<any, any, any> | RegleStatus<any, any, any>>> extends {
|
|
2536
2652
|
$value: infer V;
|
|
2537
|
-
} ? V : unknown)>(root: MaybeRef<TRoot>, discriminantKey: TKey, discriminantValue: TValue): Ref<
|
|
2538
|
-
$fields: Extract<TRoot['$fields'], { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> }>;
|
|
2539
|
-
}) | undefined>;
|
|
2653
|
+
} ? V : unknown)>(root: MaybeRef<TRoot>, discriminantKey: TKey, discriminantValue: TValue): Ref<Extract<TRoot['$fields'], { [K in TKey]: RegleFieldStatus<TValue, any, any> }> | undefined>;
|
|
2540
2654
|
//#endregion
|
|
2541
2655
|
//#region src/core/refineRules.d.ts
|
|
2542
2656
|
/**
|
|
@@ -2566,4 +2680,4 @@ declare function defineRules<TRules extends RegleUnknownRulesTree>(rules: TRules
|
|
|
2566
2680
|
*/
|
|
2567
2681
|
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>;
|
|
2568
2682
|
//#endregion
|
|
2569
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HasNamedKeys, 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 MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type NonEmptyTuple, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type 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 };
|
|
2683
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HasNamedKeys, 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 MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type NonEmptyTuple, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type 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, useRules, type useRulesFn, useScopedRegle, variantToRef };
|
package/dist/regle-core.js
CHANGED
|
@@ -709,8 +709,8 @@ function flatErrors(errors, options) {
|
|
|
709
709
|
if (Array.isArray(errors) && errors.every((err) => !isObject(err))) return errors;
|
|
710
710
|
else if (isCollectionError(errors)) {
|
|
711
711
|
const selfErrors = includePath ? errors.$self?.map((err) => ({
|
|
712
|
-
|
|
713
|
-
path:
|
|
712
|
+
message: err,
|
|
713
|
+
path: []
|
|
714
714
|
})) ?? [] : errors.$self ?? [];
|
|
715
715
|
const eachErrors = errors.$each?.map((err) => iterateErrors(err, includePath)) ?? [];
|
|
716
716
|
return selfErrors?.concat(eachErrors.flat());
|
|
@@ -720,16 +720,16 @@ function iterateErrors(errors, includePath = false, _path) {
|
|
|
720
720
|
const path = includePath && !_path ? [] : _path;
|
|
721
721
|
if (Array.isArray(errors) && errors.every((err) => !isObject(err))) {
|
|
722
722
|
if (includePath) return errors.map((err) => ({
|
|
723
|
-
|
|
724
|
-
path: path
|
|
723
|
+
message: err,
|
|
724
|
+
path: path ?? []
|
|
725
725
|
}));
|
|
726
726
|
return errors;
|
|
727
727
|
} else if (isCollectionError(errors)) {
|
|
728
728
|
const selfErrors = path?.length ? errors.$self?.map((err) => ({
|
|
729
|
-
|
|
730
|
-
path: path
|
|
729
|
+
message: err,
|
|
730
|
+
path: path ?? []
|
|
731
731
|
})) ?? [] : errors.$self ?? [];
|
|
732
|
-
const eachErrors = errors.$each?.map((err, index) => iterateErrors(err, includePath, path?.concat(index
|
|
732
|
+
const eachErrors = errors.$each?.map((err, index) => iterateErrors(err, includePath, path?.concat(index))) ?? [];
|
|
733
733
|
return selfErrors?.concat(eachErrors.flat());
|
|
734
734
|
} else return Object.entries(errors).map(([key, value]) => iterateErrors(value, includePath, path?.concat(key))).flat();
|
|
735
735
|
}
|
|
@@ -911,6 +911,23 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
911
911
|
});
|
|
912
912
|
}
|
|
913
913
|
|
|
914
|
+
//#endregion
|
|
915
|
+
//#region src/core/useRegle/root/standard-schemas.ts
|
|
916
|
+
function createStandardSchema(validateFn) {
|
|
917
|
+
return { "~standard": {
|
|
918
|
+
version: 1,
|
|
919
|
+
vendor: "regle",
|
|
920
|
+
validate: async (value) => {
|
|
921
|
+
const { valid, data, errors } = await validateFn(value);
|
|
922
|
+
if (valid) return {
|
|
923
|
+
value: data,
|
|
924
|
+
issues: []
|
|
925
|
+
};
|
|
926
|
+
return { issues: flatErrors(errors, { includePath: true }) };
|
|
927
|
+
}
|
|
928
|
+
} };
|
|
929
|
+
}
|
|
930
|
+
|
|
914
931
|
//#endregion
|
|
915
932
|
//#region src/core/useRegle/root/createReactiveFieldStatus.ts
|
|
916
933
|
function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cachePath, fieldName, storage, options, externalErrors, schemaErrors, schemaMode, onUnwatch, $isArray, initialState, originalState, shortcuts, onValidate }) {
|
|
@@ -933,7 +950,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
933
950
|
const rules = rulesDef.value;
|
|
934
951
|
const entries = [];
|
|
935
952
|
for (const ruleKey in rules) {
|
|
936
|
-
if (ruleKey.startsWith("$")) continue;
|
|
953
|
+
if (ruleKey.startsWith("$") || ruleKey.startsWith("~")) continue;
|
|
937
954
|
const rule = rules[ruleKey];
|
|
938
955
|
if (!rule) continue;
|
|
939
956
|
const ruleRef = toRef(() => rule);
|
|
@@ -1240,37 +1257,50 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1240
1257
|
if (!scopeState.$silent.value || scopeState.$rewardEarly.value && scopeState.$error.value) $commit();
|
|
1241
1258
|
} else if (runCommit) $commit();
|
|
1242
1259
|
}
|
|
1243
|
-
async function $validate() {
|
|
1260
|
+
async function $validate(forceValues) {
|
|
1244
1261
|
try {
|
|
1262
|
+
if (forceValues) state.value = forceValues;
|
|
1245
1263
|
if (schemaMode) if (onValidate) {
|
|
1246
1264
|
$touch(false);
|
|
1247
1265
|
return onValidate();
|
|
1248
1266
|
} else return {
|
|
1249
1267
|
valid: false,
|
|
1250
|
-
data: state.value
|
|
1268
|
+
data: state.value,
|
|
1269
|
+
errors: scopeState.$errors.value,
|
|
1270
|
+
issues: scopeState.$issues.value
|
|
1251
1271
|
};
|
|
1252
1272
|
const data = state.value;
|
|
1253
1273
|
if (!scopeState.$dirty.value) scopeState.$dirty.value = true;
|
|
1254
1274
|
else if (!scopeState.$silent.value && scopeState.$dirty.value && !scopeState.$pending.value) return {
|
|
1255
1275
|
valid: !scopeState.$error.value,
|
|
1256
|
-
data
|
|
1276
|
+
data,
|
|
1277
|
+
errors: scopeState.$errors.value,
|
|
1278
|
+
issues: scopeState.$issues.value
|
|
1257
1279
|
};
|
|
1258
1280
|
if (schemaMode) return {
|
|
1259
1281
|
valid: !schemaErrors?.value?.length,
|
|
1260
|
-
data
|
|
1282
|
+
data,
|
|
1283
|
+
errors: scopeState.$errors.value,
|
|
1284
|
+
issues: scopeState.$issues.value
|
|
1261
1285
|
};
|
|
1262
1286
|
else if (isEmpty($rules.value)) return {
|
|
1263
1287
|
valid: true,
|
|
1264
|
-
data
|
|
1288
|
+
data,
|
|
1289
|
+
errors: scopeState.$errors.value,
|
|
1290
|
+
issues: scopeState.$issues.value
|
|
1265
1291
|
};
|
|
1266
1292
|
return {
|
|
1267
1293
|
valid: (await Promise.allSettled(Object.values($rules.value).map((rule) => rule.$parse()))).every((value) => value.status === "fulfilled" && value.value === true),
|
|
1268
|
-
data
|
|
1294
|
+
data,
|
|
1295
|
+
errors: scopeState.$errors.value,
|
|
1296
|
+
issues: scopeState.$issues.value
|
|
1269
1297
|
};
|
|
1270
1298
|
} catch {
|
|
1271
1299
|
return {
|
|
1272
1300
|
valid: false,
|
|
1273
|
-
data: state.value
|
|
1301
|
+
data: state.value,
|
|
1302
|
+
errors: scopeState.$errors.value,
|
|
1303
|
+
issues: scopeState.$issues.value
|
|
1274
1304
|
};
|
|
1275
1305
|
}
|
|
1276
1306
|
}
|
|
@@ -1300,7 +1330,8 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1300
1330
|
$unwatch,
|
|
1301
1331
|
$watch,
|
|
1302
1332
|
$extractDirtyFields,
|
|
1303
|
-
$clearExternalErrors
|
|
1333
|
+
$clearExternalErrors,
|
|
1334
|
+
...createStandardSchema($validate)
|
|
1304
1335
|
});
|
|
1305
1336
|
}
|
|
1306
1337
|
|
|
@@ -1680,22 +1711,27 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1680
1711
|
});
|
|
1681
1712
|
if (!fromParent) createStatus();
|
|
1682
1713
|
}
|
|
1683
|
-
async function $validate() {
|
|
1714
|
+
async function $validate(forceValues) {
|
|
1715
|
+
if (forceValues) state.value = forceValues;
|
|
1684
1716
|
const data = state.value;
|
|
1685
1717
|
try {
|
|
1686
1718
|
return {
|
|
1687
|
-
valid: (await Promise.allSettled([$selfStatus.value.$validate(), ...$eachStatus.value.map((status) => {
|
|
1719
|
+
valid: (await Promise.allSettled([$selfStatus.value.$validate(forceValues), ...$eachStatus.value.map((status) => {
|
|
1688
1720
|
return status.$validate();
|
|
1689
1721
|
})])).every((value) => {
|
|
1690
1722
|
if (value.status === "fulfilled") return value.value.valid === true;
|
|
1691
1723
|
else return false;
|
|
1692
1724
|
}),
|
|
1693
|
-
data
|
|
1725
|
+
data,
|
|
1726
|
+
errors: scopeState.$errors.value,
|
|
1727
|
+
issues: scopeState.$issues.value
|
|
1694
1728
|
};
|
|
1695
1729
|
} catch {
|
|
1696
1730
|
return {
|
|
1697
1731
|
valid: false,
|
|
1698
|
-
data
|
|
1732
|
+
data,
|
|
1733
|
+
errors: scopeState.$errors.value,
|
|
1734
|
+
issues: scopeState.$issues.value
|
|
1699
1735
|
};
|
|
1700
1736
|
}
|
|
1701
1737
|
}
|
|
@@ -1732,7 +1768,8 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1732
1768
|
$touch,
|
|
1733
1769
|
$reset,
|
|
1734
1770
|
$extractDirtyFields,
|
|
1735
|
-
$clearExternalErrors
|
|
1771
|
+
$clearExternalErrors,
|
|
1772
|
+
...createStandardSchema($validate)
|
|
1736
1773
|
});
|
|
1737
1774
|
}
|
|
1738
1775
|
|
|
@@ -2109,27 +2146,34 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2109
2146
|
if (filterNullishValues) dirtyFields = filterNullishFields(dirtyFields);
|
|
2110
2147
|
return Object.fromEntries(dirtyFields);
|
|
2111
2148
|
}
|
|
2112
|
-
async function $validate() {
|
|
2149
|
+
async function $validate(forceValues) {
|
|
2113
2150
|
try {
|
|
2151
|
+
if (forceValues) state.value = forceValues;
|
|
2114
2152
|
if (commonArgs.schemaMode) if (commonArgs.onValidate) {
|
|
2115
2153
|
$touch(false);
|
|
2116
2154
|
scopeState.$localPending.value = true;
|
|
2117
2155
|
return commonArgs.onValidate();
|
|
2118
2156
|
} else return {
|
|
2119
2157
|
valid: false,
|
|
2120
|
-
data: state.value
|
|
2158
|
+
data: state.value,
|
|
2159
|
+
errors: scopeState.$errors.value,
|
|
2160
|
+
issues: scopeState.$issues.value
|
|
2121
2161
|
};
|
|
2122
2162
|
else {
|
|
2123
2163
|
const data = state.value;
|
|
2124
2164
|
return {
|
|
2125
2165
|
valid: (await Promise.allSettled(Object.values($fields.value).map((statusOrField) => statusOrField.$validate()))).every((value) => value.status === "fulfilled" && value?.value.valid === true),
|
|
2126
|
-
data
|
|
2166
|
+
data,
|
|
2167
|
+
errors: scopeState.$errors.value,
|
|
2168
|
+
issues: scopeState.$issues.value
|
|
2127
2169
|
};
|
|
2128
2170
|
}
|
|
2129
2171
|
} catch {
|
|
2130
2172
|
return {
|
|
2131
2173
|
valid: false,
|
|
2132
|
-
data: state.value
|
|
2174
|
+
data: state.value,
|
|
2175
|
+
errors: scopeState.$errors.value,
|
|
2176
|
+
issues: scopeState.$issues.value
|
|
2133
2177
|
};
|
|
2134
2178
|
} finally {
|
|
2135
2179
|
scopeState.$localPending.value = false;
|
|
@@ -2149,10 +2193,11 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2149
2193
|
$unwatch,
|
|
2150
2194
|
$watch,
|
|
2151
2195
|
$clearExternalErrors,
|
|
2152
|
-
$extractDirtyFields
|
|
2196
|
+
$extractDirtyFields,
|
|
2197
|
+
...createStandardSchema($validate)
|
|
2153
2198
|
});
|
|
2154
2199
|
watchEffect(() => {
|
|
2155
|
-
for (const key of Object.keys(fullStatus).filter((key$1) => !key$1.startsWith("$"))) delete fullStatus[key];
|
|
2200
|
+
for (const key of Object.keys(fullStatus).filter((key$1) => !key$1.startsWith("$") && !key$1.startsWith("~"))) delete fullStatus[key];
|
|
2156
2201
|
for (const field of Object.values($fields.value)) if (field?.$name) Object.assign(fullStatus, { [field.$name]: field });
|
|
2157
2202
|
});
|
|
2158
2203
|
return fullStatus;
|
|
@@ -2263,6 +2308,32 @@ function useRootStorage({ initialState, originalState, options, scopeRules, stat
|
|
|
2263
2308
|
return reactive({ regle });
|
|
2264
2309
|
}
|
|
2265
2310
|
|
|
2311
|
+
//#endregion
|
|
2312
|
+
//#region src/core/useRegle/shared.rootRegle.ts
|
|
2313
|
+
function createRootRegleLogic({ state, rulesFactory, options, globalOptions, customRules, shortcuts }) {
|
|
2314
|
+
const definedRules = isRef(rulesFactory) ? rulesFactory : typeof rulesFactory === "function" ? void 0 : computed(() => rulesFactory);
|
|
2315
|
+
const resolvedOptions = {
|
|
2316
|
+
...globalOptions,
|
|
2317
|
+
...options
|
|
2318
|
+
};
|
|
2319
|
+
const watchableRulesGetters = shallowRef(definedRules ?? {});
|
|
2320
|
+
if (typeof rulesFactory === "function") watchEffect(() => {
|
|
2321
|
+
watchableRulesGetters.value = rulesFactory(state);
|
|
2322
|
+
triggerRef(watchableRulesGetters);
|
|
2323
|
+
});
|
|
2324
|
+
const initialState = ref(isObject(state.value) ? { ...cloneDeep(state.value) } : cloneDeep(state.value));
|
|
2325
|
+
const originalState = isObject(state.value) ? { ...cloneDeep(state.value) } : cloneDeep(state.value);
|
|
2326
|
+
return useRootStorage({
|
|
2327
|
+
scopeRules: watchableRulesGetters,
|
|
2328
|
+
state,
|
|
2329
|
+
options: resolvedOptions,
|
|
2330
|
+
initialState,
|
|
2331
|
+
originalState,
|
|
2332
|
+
customRules,
|
|
2333
|
+
shortcuts
|
|
2334
|
+
});
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2266
2337
|
//#endregion
|
|
2267
2338
|
//#region src/core/useRegle/useRegle.ts
|
|
2268
2339
|
function createUseRegleComposable(customRules, options, shortcuts) {
|
|
@@ -2274,25 +2345,12 @@ function createUseRegleComposable(customRules, options, shortcuts) {
|
|
|
2274
2345
|
clearExternalErrorsOnChange: options?.clearExternalErrorsOnChange
|
|
2275
2346
|
};
|
|
2276
2347
|
function useRegle$1(state, rulesFactory, options$1) {
|
|
2277
|
-
const definedRules = isRef(rulesFactory) ? rulesFactory : typeof rulesFactory === "function" ? void 0 : computed(() => rulesFactory);
|
|
2278
|
-
const resolvedOptions = {
|
|
2279
|
-
...globalOptions,
|
|
2280
|
-
...options$1
|
|
2281
|
-
};
|
|
2282
2348
|
const processedState = isRef(state) ? state : ref(state);
|
|
2283
|
-
|
|
2284
|
-
if (typeof rulesFactory === "function") watchEffect(() => {
|
|
2285
|
-
watchableRulesGetters.value = rulesFactory(processedState);
|
|
2286
|
-
triggerRef(watchableRulesGetters);
|
|
2287
|
-
});
|
|
2288
|
-
const initialState = ref(isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value));
|
|
2289
|
-
const originalState = isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value);
|
|
2290
|
-
return { r$: useRootStorage({
|
|
2291
|
-
scopeRules: watchableRulesGetters,
|
|
2349
|
+
return { r$: createRootRegleLogic({
|
|
2292
2350
|
state: processedState,
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2351
|
+
rulesFactory,
|
|
2352
|
+
options: options$1,
|
|
2353
|
+
globalOptions,
|
|
2296
2354
|
customRules,
|
|
2297
2355
|
shortcuts
|
|
2298
2356
|
}).regle };
|
|
@@ -2337,6 +2395,60 @@ function createInferRuleHelper() {
|
|
|
2337
2395
|
*/
|
|
2338
2396
|
const inferRules = createInferRuleHelper();
|
|
2339
2397
|
|
|
2398
|
+
//#endregion
|
|
2399
|
+
//#region src/core/useRegle/useRules.ts
|
|
2400
|
+
function createEmptyRuleState(rules) {
|
|
2401
|
+
const result = {};
|
|
2402
|
+
if (Object.entries(rules).some(([_, rule]) => isRuleDef(rule) || typeof rule === "function")) return null;
|
|
2403
|
+
for (const key in rules) {
|
|
2404
|
+
const item = rules[key];
|
|
2405
|
+
if (!!item && isObject(item) && "$each" in item && item["$each"] && isObject(item["$each"])) result[key] = [createEmptyRuleState(item["$each"])];
|
|
2406
|
+
else if (isObject(item) && !isEmpty(item) && !Object.entries(item).some(([_, rule]) => isRuleDef(rule) || typeof rule === "function")) result[key] = createEmptyRuleState(item);
|
|
2407
|
+
else result[key] = null;
|
|
2408
|
+
}
|
|
2409
|
+
return result;
|
|
2410
|
+
}
|
|
2411
|
+
function createUseRulesComposable(customRules, options, shortcuts) {
|
|
2412
|
+
const globalOptions = {
|
|
2413
|
+
autoDirty: options?.autoDirty,
|
|
2414
|
+
lazy: options?.lazy,
|
|
2415
|
+
rewardEarly: options?.rewardEarly,
|
|
2416
|
+
silent: options?.silent,
|
|
2417
|
+
clearExternalErrorsOnChange: options?.clearExternalErrorsOnChange
|
|
2418
|
+
};
|
|
2419
|
+
function useRules$1(rulesFactory, options$1) {
|
|
2420
|
+
const definedRules = isRef(rulesFactory) ? rulesFactory : typeof rulesFactory === "function" ? void 0 : computed(() => rulesFactory);
|
|
2421
|
+
const processedState = ref(createEmptyRuleState(definedRules?.value));
|
|
2422
|
+
return createRootRegleLogic({
|
|
2423
|
+
state: processedState,
|
|
2424
|
+
rulesFactory: definedRules,
|
|
2425
|
+
options: options$1,
|
|
2426
|
+
globalOptions,
|
|
2427
|
+
customRules,
|
|
2428
|
+
shortcuts
|
|
2429
|
+
}).regle;
|
|
2430
|
+
}
|
|
2431
|
+
return useRules$1;
|
|
2432
|
+
}
|
|
2433
|
+
/**
|
|
2434
|
+
* useRules is a clone of useRegle, without the need to provide a state.
|
|
2435
|
+
*
|
|
2436
|
+
* It accepts the following inputs:
|
|
2437
|
+
*
|
|
2438
|
+
* @param rules - Your rules object
|
|
2439
|
+
* @param modifiers - Customize regle behaviour
|
|
2440
|
+
*
|
|
2441
|
+
* ```ts
|
|
2442
|
+
* import { useRules } from '@regle/core';
|
|
2443
|
+
import { required } from '@regle/rules';
|
|
2444
|
+
|
|
2445
|
+
const { r$ } = useRules({
|
|
2446
|
+
email: { required }
|
|
2447
|
+
})
|
|
2448
|
+
* ```
|
|
2449
|
+
*/
|
|
2450
|
+
const useRules = createUseRulesComposable();
|
|
2451
|
+
|
|
2340
2452
|
//#endregion
|
|
2341
2453
|
//#region src/core/defineRegleConfig.ts
|
|
2342
2454
|
/**
|
|
@@ -2353,15 +2465,22 @@ const inferRules = createInferRuleHelper();
|
|
|
2353
2465
|
*/
|
|
2354
2466
|
function defineRegleConfig({ rules, modifiers, shortcuts }) {
|
|
2355
2467
|
const useRegle$1 = createUseRegleComposable(rules, modifiers, shortcuts);
|
|
2468
|
+
const useRules$1 = createUseRulesComposable(rules, modifiers, shortcuts);
|
|
2356
2469
|
useRegle$1.__config = {
|
|
2357
2470
|
rules,
|
|
2358
2471
|
modifiers,
|
|
2359
2472
|
shortcuts
|
|
2360
2473
|
};
|
|
2474
|
+
useRules$1.__config = {
|
|
2475
|
+
rules,
|
|
2476
|
+
modifiers,
|
|
2477
|
+
shortcuts
|
|
2478
|
+
};
|
|
2361
2479
|
const inferRules$1 = createInferRuleHelper();
|
|
2362
2480
|
return {
|
|
2363
2481
|
useRegle: useRegle$1,
|
|
2364
|
-
inferRules: inferRules$1
|
|
2482
|
+
inferRules: inferRules$1,
|
|
2483
|
+
useRules: useRules$1
|
|
2365
2484
|
};
|
|
2366
2485
|
}
|
|
2367
2486
|
/**
|
|
@@ -2452,6 +2571,22 @@ function mergeRegles(regles, _scoped) {
|
|
|
2452
2571
|
return regle?.$pending;
|
|
2453
2572
|
});
|
|
2454
2573
|
});
|
|
2574
|
+
const $issues = computed(() => {
|
|
2575
|
+
if (scoped) return Object.entries(regles).map(([_, regle]) => {
|
|
2576
|
+
return regle.$issues;
|
|
2577
|
+
});
|
|
2578
|
+
else return Object.fromEntries(Object.entries(regles).map(([key, regle]) => {
|
|
2579
|
+
return [key, regle.$issues];
|
|
2580
|
+
}));
|
|
2581
|
+
});
|
|
2582
|
+
const $silentIssues = computed(() => {
|
|
2583
|
+
if (scoped) return Object.entries(regles).map(([_, regle]) => {
|
|
2584
|
+
return regle.$silentIssues;
|
|
2585
|
+
});
|
|
2586
|
+
else return Object.fromEntries(Object.entries(regles).map(([key, regle]) => {
|
|
2587
|
+
return [key, regle.$silentIssues];
|
|
2588
|
+
}));
|
|
2589
|
+
});
|
|
2455
2590
|
const $errors = computed(() => {
|
|
2456
2591
|
if (scoped) return Object.entries(regles).map(([_, regle]) => {
|
|
2457
2592
|
return regle.$errors;
|
|
@@ -2501,8 +2636,9 @@ function mergeRegles(regles, _scoped) {
|
|
|
2501
2636
|
regle.$clearExternalErrors();
|
|
2502
2637
|
});
|
|
2503
2638
|
}
|
|
2504
|
-
async function $validate() {
|
|
2639
|
+
async function $validate(forceValues) {
|
|
2505
2640
|
try {
|
|
2641
|
+
if (forceValues) $value.value = forceValues;
|
|
2506
2642
|
const data = $value.value;
|
|
2507
2643
|
return {
|
|
2508
2644
|
valid: (await Promise.allSettled(Object.values(regles).map((regle) => {
|
|
@@ -2511,18 +2647,24 @@ function mergeRegles(regles, _scoped) {
|
|
|
2511
2647
|
if (value.status === "fulfilled") return value.value.valid === true;
|
|
2512
2648
|
else return false;
|
|
2513
2649
|
}),
|
|
2514
|
-
data
|
|
2650
|
+
data,
|
|
2651
|
+
errors: $errors.value,
|
|
2652
|
+
issues: $issues.value
|
|
2515
2653
|
};
|
|
2516
2654
|
} catch {
|
|
2517
2655
|
return {
|
|
2518
2656
|
valid: false,
|
|
2519
|
-
data: $value.value
|
|
2657
|
+
data: $value.value,
|
|
2658
|
+
errors: $errors.value,
|
|
2659
|
+
issues: $issues.value
|
|
2520
2660
|
};
|
|
2521
2661
|
}
|
|
2522
2662
|
}
|
|
2523
2663
|
return reactive({
|
|
2524
2664
|
...!scoped && { $silentValue },
|
|
2525
2665
|
$errors,
|
|
2666
|
+
$issues,
|
|
2667
|
+
$silentIssues,
|
|
2526
2668
|
$silentErrors,
|
|
2527
2669
|
$instances,
|
|
2528
2670
|
$value,
|
|
@@ -2704,7 +2846,7 @@ function variantToRef(root, discriminantKey, discriminantValue) {
|
|
|
2704
2846
|
const returnedRef = ref();
|
|
2705
2847
|
watch(fromRoot, async () => {
|
|
2706
2848
|
await nextTick();
|
|
2707
|
-
if (narrowVariant(fromRoot.value, discriminantKey, discriminantValue)) returnedRef.value =
|
|
2849
|
+
if (narrowVariant(fromRoot.value, discriminantKey, discriminantValue)) returnedRef.value = fromRoot.value;
|
|
2708
2850
|
else returnedRef.value = void 0;
|
|
2709
2851
|
}, {
|
|
2710
2852
|
immediate: true,
|
|
@@ -2747,4 +2889,4 @@ function refineRules(rules, refinement) {
|
|
|
2747
2889
|
}
|
|
2748
2890
|
|
|
2749
2891
|
//#endregion
|
|
2750
|
-
export { InternalRuleType, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle, variantToRef };
|
|
2892
|
+
export { InternalRuleType, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function O(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise(r=>{function s(e){r(e),o()}clearTimeout(i),i=setTimeout(()=>{i=void 0,n||Promise.resolve(e.apply(this,[...a])).then(s).finally(o)},t),n&&!i&&Promise.resolve(e.apply(this,[...a])).then(s).finally(o)})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function k(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!k(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(w(e)&&w(t)&&s&&(r||!r&&n)&&!k(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}const A={Inline:`__inline`,Async:`__async`};function j(e,t){return e.some(e=>t?e?.[t]:!1)}function M(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function N(e){try{return e.map(e=>p(e))}catch{return[]}}function P(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function F(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function I(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===A.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...N(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:N(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:N(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:N(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...N(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:P(t),_brand:x})}function L(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=I({...e,async:n},...t);if(F(e.validator)>1){let t=function(...t){return I(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function R(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=N(i._params),n=N(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function z(e){return w(e.value)}function B(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const V={LessThan:-1,EqualTo:0,GreaterThan:1};function H(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return V.GreaterThan;if(i>t)return V.LessThan;if(!isNaN(t)&&isNaN(i))return V.GreaterThan;if(isNaN(t)&&!isNaN(i))return V.LessThan}return V.EqualTo}const U=H(g,`3.5.0`)!==-1;function W(){return Math.floor(Math.random()*Date.now()).toString()}function G(){return typeof window>`u`?W():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function K(e){return r()?(c(e),!0):!1}function q(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function J(e,t){return z(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>Z(t)||typeof t==`function`)}function Y(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function X(e){return!!e.value&&(w(e.value)||z(e.value))}function Z(e){return w(e)&&`_validator`in e}function Q(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function re({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>oe(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>oe(t,n,[e])).flat()}function oe(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({error:e,path:r?.join(`.`)??``})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>oe(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>oe(n,t,r?.concat(e))).flat()}function se({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>Z(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.value})),p=e(()=>Q(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Q(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Q(r)&&r.value.type?r.value.type:i),S=e(()=>Q(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:N(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,Z(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$reset:D})}function ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:T,shortcuts:E,onValidate:A}){let j=t(),M,N=[],P,F,I,L,R=()=>{},z=u(!1);function B(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);J.value=s,W();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,se({modifiers:{$silent:M.$silent,$rewardEarly:M.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:J.value.$debounce})])}q.value=Object.fromEntries(u),M.processShortcuts(),V(),t?.valid!=null&&(M.$dirty.value=c.getDirtyState(o),(M.$dirty.value&&!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&R()),c.addRuleDeclEntry(o,e)}function V(){R=M.$debounce.value||M.$haveAnyAsyncRule.value?O(K,M.$debounce.value??(M.$haveAnyAsyncRule?200:0),{trackDebounceRef:z}):K}function H(){if(q.value)for(let e of Object.values(q.value))e.$unwatch();F(),L?.(),M.$dirty.value&&c.setDirtyEntry(o,M.$dirty.value),P?.(),j.stop(),j=t();for(let e of N)e.stop();N=[],y?.(),I?.()}function W(){if(q.value)for(let e of Object.values(q.value))e.$watch();M=j.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>J.value.$debounce),f=e(()=>J.value.$deepCompare==null?!1:J.value.$deepCompare),_=e(()=>J.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):J.value.$lazy),y=e(()=>J.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):J.value.$rewardEarly),x=e(()=>J.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):J.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:J.value.$silent==null?h(d.silent)==null?!1:h(d.silent):J.value.$silent),w=e(()=>J.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):J.value.$autoDirty),T=e(()=>{for(let e of Object.values(q.value))if(e.$validating)return!0;return!1}),O=e({get:()=>n.value,set(e){P(),n.value=e,G()}}),A=e(()=>z.value?U.value&&i.value:U.value&&!H.value&&i.value),j=e(()=>ne({field:{$rules:q.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),M=e(()=>ne({field:{$rules:q.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),F=e(()=>j.value.map(e=>e.$message)),I=e(()=>M.value.map(e=>e.$message)),L=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?D(S.value).getDate()!==D(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!k(n.value,S.value,J.value.$deepCompare):S.value!==n.value:!1),R=e(()=>L.value),B=e(()=>re({field:{$rules:q.value}})),V=e(()=>(C.value||o.value)&&!(U.value||H.value)),H=e(()=>a.value||!y.value?Object.entries(q.value).some(([e,t])=>t.$pending):!1),U=e(()=>m?.value&&!Array.isArray(m?.value)&&`$self`in m.value?m?.value.$self?.length>0:p?.value?.length||m?.value?.length?!0:K.value?!1:Object.values(q.value).some(e=>!e.$valid||e.$maybePending)),W=e(()=>s),K=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Y=e(()=>{if(p?.value?.length||K.value||z.value)return!1;if(i.value&&!b(n.value)&&!T.value&&!H.value){if(g)return!m?.value?.length;{let e=Object.values(q.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),X=e(()=>Object.values(q.value).some(e=>e.$haveAsync));function Z(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();Q[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:O,$rules:q,$error:A,$pending:H,$invalid:U,$correct:Y,$errors:F,$ready:V,$silentErrors:I,$anyDirty:o,$tooltips:B,$name:W,$inactive:K,$edited:L,$anyEdited:R}))}),e}),N.push(a)})}let Q={};return{$error:A,$pending:H,$invalid:U,$correct:Y,$debounce:c,$deepCompare:f,$lazy:_,$ready:V,$issues:j,$silentIssues:M,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:X,$shortcuts:Q,$validating:T,$tooltips:B,$dirty:i,processShortcuts:Z,$silentValue:O,$inactive:K}}),G(),F=_(M.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(q.value).forEach(t=>{t.$fieldDirty=e})}),L=_([M.$error,M.$correct,M.$invalid,M.$pending],()=>{Object.values(q.value).forEach(e=>{e.$fieldError=M.$error.value,e.$fieldInvalid=M.$invalid.value,e.$fieldPending=M.$pending.value,e.$fieldCorrect=M.$correct.value})}),I=_(M.$haveAnyAsyncRule,V)}function G(){P=_(n,()=>{M.$autoDirty.value&&!M.$silent.value&&(M.$dirty.value||(M.$dirty.value=!0)),r.value instanceof Function&&B(),(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&R(),M.$clearExternalErrorsOnChange.value&&ee()},{deep:x?!0:U?1:!0})}function K(){Object.values(q.value).forEach(e=>{e.$parse()})}let q=u({}),J=u({});B();function Y(e,t){if(ee(),M.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&ee(),!t)for(let e of Object.values(q.value))e.$reset();if(!M.$lazy.value&&!M.$silent.value&&!t)for(let e of Object.values(q.value))e.$parse()}function X(e=!0,t=!1){M.$dirty.value||(M.$dirty.value=!0),t&&e?(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&R():e&&R()}async function Z(){try{if(g)return A?(X(!1),A()):{valid:!1,data:n.value};let e=n.value;if(!M.$dirty.value)M.$dirty.value=!0;else if(!M.$silent.value&&M.$dirty.value&&!M.$pending.value)return{valid:!M.$error.value,data:e};return g?{valid:!m?.value?.length,data:e}:b(q.value)?{valid:!0,data:e}:{valid:(await Promise.allSettled(Object.values(q.value).map(e=>e.$parse()))).every(e=>e.status===`fulfilled`&&e.value===!0),data:e}}catch{return{valid:!1,data:n.value}}}function Q(e=!0){return M.$dirty.value?n.value:e?{_null:!0}:null}function ee(){p?.value?.length&&(p.value=[])}!M.$lazy.value&&!M.$dirty.value&&!M.$silent.value&&R();let{$shortcuts:te,$validating:ie,$autoDirty:ae,$rewardEarly:oe,$clearExternalErrorsOnChange:ce,$haveAnyAsyncRule:le,$debounce:ue,$lazy:de,...$}=M;return l({...$,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:q,...te,$path:a,$isDebouncing:z,$reset:Y,$touch:X,$validate:Z,$unwatch:H,$watch:W,$extractDirtyFields:Q,$clearExternalErrors:ee})}function le({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_}){let v=s.value?.$id??l.$key??G(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=$({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),C}function ue({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,originalState:g,shortcuts:y,fieldName:x}){let S=t(),w,T=t(),E,D=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let O=u(),k=u(n.value),A=u({}),j,M,N=u({}),P=o.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Z(e)||typeof e==`function`):!1:!1)})),F(),z();function F(){A.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(O.value=G(),Object.defineProperties(n.value,{$id:{value:O.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(O.value=n.value.$id)),k.value=N.value.$value,Array.isArray(n.value)&&!E.isPrimitiveArray.value?P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=B(r.value.$each,f(()=>t),n);l&&D.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each);return le({$id:O.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}).filter(e=>!!e):P.value=[],N.value=ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})}function I(){if(Array.isArray(n.value)&&!E.isPrimitiveArray.value){let t=C(P.value);P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&P.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(O.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=B(r.value.$each,l,n);t&&D.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]);return le({$id:O.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(O.value,t.toString())})}else P.value=[]}function L(){j=_(n,()=>{M?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!O.value?F():I(),R()},{deep:U?1:!0,flush:`pre`}),R()}function R(){M=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&N.value.$touch(!1,!0)},{flush:`post`})}function z(){L(),S=t(),w=S.run(()=>{let r=e({get:()=>n.value,set(e){j?.(),M?.(),n.value=e,L()}}),i=e(()=>N.value.$dirty&&(!P.value.length||P.value.every(e=>e.$dirty))),o=e(()=>N.value.$anyDirty||P.value.some(e=>e.$anyDirty)),c=e(()=>N.value.$invalid||P.value.some(e=>e.$invalid)),d=e(()=>(b(N.value.$rules)?!0:N.value.$correct)&&(!P.value.length||P.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>N.value.$error||P.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>N.value.$pending||P.value.some(e=>e.$pending)),S=e(()=>!!P.value.length&&P.value.every(e=>e.$edited)),C=e(()=>N.value.$anyEdited||P.value.some(e=>e.$anyEdited)),w=e(()=>({$self:N.value.$issues,$each:P.value.map(e=>e.$issues)})),T=e(()=>({$self:N.value.$errors,$each:P.value.map(e=>e.$errors)})),E=e(()=>({$self:N.value.$silentErrors,$each:P.value.map(e=>e.$silentErrors)})),O=e(()=>A.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):A.value.$rewardEarly),k=e(()=>O.value?!0:A.value.$silent==null?h(s.silent)==null?!1:h(s.silent):A.value.$silent),F=e(()=>A.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):A.value.$autoDirty),I=e(()=>x);function R(){y?.collections&&Object.entries(y?.collections).forEach(([e,s])=>{let h=t();z[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:c,$correct:d,$errors:T,$silentErrors:E,$initialValue:m,$originalValue:g,$ready:p,$anyDirty:o,$name:I,$each:P,$self:N,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),D.push(h)})}let z={};return R(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:I,$shortcuts:z,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:O,$silent:k,$autoDirty:F,$issues:w}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function V(){j?.(),N.value&&N.value.$unwatch(),P.value&&P.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),S.stop(),S=t(),T.stop(),T=t(!0),D.forEach(e=>e.stop()),D=[]}function H(e=!0,t=!1){N.value.$touch(e,t),P.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(V(),!t)if(e?.toOriginalState)n.value=C(g),m.value=C(g);else if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&q(),N.value.$reset(e,t),P.value.forEach(t=>{t.$reset(e,!0)}),t||F()}async function K(){let e=n.value;try{return{valid:(await Promise.allSettled([N.value.$validate(),...P.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:e}}catch{return{valid:!1,data:e}}}function q(){N.value.$clearExternalErrors(),P.value.forEach(e=>{e.$clearExternalErrors()})}function J(e=!0){let t=P.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:Y,...X}=w;return l({$self:N,...X,...Y,$path:a,$each:P,$value:n,$initialValue:m,$originalValue:g,$validate:K,$unwatch:V,$watch:z,$touch:H,$reset:W,$extractDirtyFields:J,$clearExternalErrors:q})}function de({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),T,E=[],D=null,O=null,k=null,A=null;async function N(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,$({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,$({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t),h=e(()=>({}));return[t,$({state:l,rulesDef:h,path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));P.value={...l,...u,...d,...p},t&&L()}let P=x.storage.getFieldsEntry(a);N();function F(){s&&(k=_(s,()=>{R(),N()},{deep:!0}))}function I(){A=_(r,()=>{R(),N(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(D?.(),D=_(o,()=>{R(),N()},{deep:!0,flush:`pre`}),F()),d&&(O?.(),O=_(d,()=>{R(),N()},{deep:!0,flush:`post`})),I(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,N(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,N()}}),o=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!te(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>te(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct):!1}),f=e(()=>{let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),F=e(()=>{if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),I=e(()=>{for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),L=e(()=>y);function z(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();H[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:L,$silentErrors:A,$initialValue:m,$errors:k,$fields:P,$edited:F,$anyEdited:I,$issues:O}))}),e}),E.push(p)})}let B=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,j(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,M(t,e)]))}]:[])):{},set(){}}),H={};return z(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:L,$shortcuts:H,$groups:B,$silentValue:a,$edited:F,$anyEdited:I,$localPending:w,$autoDirty:S,$silent:b,$value:n}})}function R(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors()}function B(e,t){if(k?.(),R(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else if(e?.toInitialState)r.value=C({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);for(let t of Object.values(P.value))t?.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||N()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t)}function H(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}async function W(){try{if(x.schemaMode)return x.onValidate?(V(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value};{let e=r.value;return{valid:(await Promise.allSettled(Object.values(P.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e}}}catch{return{valid:!1,data:r.value}}finally{T.$localPending.value=!1}}let{$shortcuts:G,$localPending:K,...q}=T,J=l({...q,...G,$path:i,$initialValue:m,$originalValue:g,$fields:P,$reset:B,$touch:V,$validate:W,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)))delete J[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function $({rulesDef:e,...n}){if(Y(e,n.state,n.schemaMode))return ue({rulesDef:e,...n});if(J(n.state,e)){if(z(n.state))return de({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return de({rulesDef:e,...a,state:r.fakeState})}}else if(X(e))return ce({rulesDef:i(e.value)?e.value:e,...n})}function fe({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=R(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),J(a,i)?h.value=de({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):X(i)&&(h.value=ce({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch()}),l({regle:h})}function pe(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o,s){let c=i(o)?o:typeof o==`function`?void 0:e(()=>o),l={...a,...s},f=i(n)?n:u(n),p=d(c??{});typeof o==`function`&&v(()=>{p.value=o(f),m(p)});let h=u(w(f.value)?{...C(f.value)}:C(f.value)),g=w(f.value)?{...C(f.value)}:C(f.value);return{r$:fe({scopeRules:p,state:f,options:l,initialState:h,originalState:g,customRules:t,shortcuts:r}).regle}}return o}const me=pe();function he(){function e(e,t){return t}return e}const ge=he();function _e({rules:e,modifiers:t,shortcuts:n}){let r=pe(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let i=he();return{useRegle:r,inferRules:i}}function ve(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=pe(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=he();return{useRegle:c,inferRules:l}}function ye(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),g=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),_=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),v=e(()=>r?Object.values(t):t);function y(e){Object.values(t).forEach(t=>{t.$reset(e)})}function b(){Object.values(t).forEach(e=>{e.$touch()})}function x(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function S(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function C(){try{let e=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function be(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return ye(t,!n.asRecord)}else return ye(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function xe(t,r){let i=r??me;return{useScopedRegle:((r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${G()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),K(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}})}}function Se(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):q(()=>u({"~~global":{}})))(),{useScopedRegle:n}=xe(t,e?.customUseRegle),{useCollectScope:r}=be(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:Ce,useScopedRegle:we}=Se();function Te(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Z(t))return h(t._params?.[0])===i.value}})||r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function Ee(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function De(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),Ee(r.value,t,n)?a.value=f(e).value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function Oe(e){return e}function ke(e,t){return n=>T({...e},t(n))}export{A as InternalRuleType,L as createRule,Se as createScopedUseRegle,Te as createVariant,_e as defineRegleConfig,Oe as defineRules,ve as extendRegleConfig,ae as flatErrors,ge as inferRules,ye as mergeRegles,Ee as narrowVariant,ke as refineRules,N as unwrapRuleParameters,Ce as useCollectScope,me as useRegle,fe as useRootStorage,we as useScopedRegle,De as variantToRef};
|
|
1
|
+
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function O(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise(r=>{function s(e){r(e),o()}clearTimeout(i),i=setTimeout(()=>{i=void 0,n||Promise.resolve(e.apply(this,[...a])).then(s).finally(o)},t),n&&!i&&Promise.resolve(e.apply(this,[...a])).then(s).finally(o)})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function k(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!k(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(w(e)&&w(t)&&s&&(r||!r&&n)&&!k(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}const A={Inline:`__inline`,Async:`__async`};function j(e,t){return e.some(e=>t?e?.[t]:!1)}function M(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function N(e){try{return e.map(e=>p(e))}catch{return[]}}function P(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function F(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function I(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===A.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...N(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:N(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:N(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:N(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...N(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:P(t),_brand:x})}function L(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=I({...e,async:n},...t);if(F(e.validator)>1){let t=function(...t){return I(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function R(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=N(i._params),n=N(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function z(e){return w(e.value)}function B(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const V={LessThan:-1,EqualTo:0,GreaterThan:1};function H(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return V.GreaterThan;if(i>t)return V.LessThan;if(!isNaN(t)&&isNaN(i))return V.GreaterThan;if(isNaN(t)&&!isNaN(i))return V.LessThan}return V.EqualTo}const U=H(g,`3.5.0`)!==-1;function W(){return Math.floor(Math.random()*Date.now()).toString()}function G(){return typeof window>`u`?W():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function K(e){return r()?(c(e),!0):!1}function q(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function J(e,t){return z(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>Z(t)||typeof t==`function`)}function Y(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function X(e){return!!e.value&&(w(e.value)||z(e.value))}function Z(e){return w(e)&&`_validator`in e}function Q(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function re({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>oe(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>oe(t,n,[e])).flat()}function oe(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>oe(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>oe(n,t,r?.concat(e))).flat()}function se({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>Z(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.value})),p=e(()=>Q(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Q(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Q(r)&&r.value.type?r.value.type:i),S=e(()=>Q(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:N(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,Z(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$reset:D})}function ce(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:ae(i,{includePath:!0})}}}}}function le({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:T,shortcuts:E,onValidate:A}){let j=t(),M,N=[],P,F,I,L,R=()=>{},z=u(!1);function B(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);J.value=s,W();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,se({modifiers:{$silent:M.$silent,$rewardEarly:M.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:J.value.$debounce})])}q.value=Object.fromEntries(u),M.processShortcuts(),V(),t?.valid!=null&&(M.$dirty.value=c.getDirtyState(o),(M.$dirty.value&&!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&R()),c.addRuleDeclEntry(o,e)}function V(){R=M.$debounce.value||M.$haveAnyAsyncRule.value?O(K,M.$debounce.value??(M.$haveAnyAsyncRule?200:0),{trackDebounceRef:z}):K}function H(){if(q.value)for(let e of Object.values(q.value))e.$unwatch();F(),L?.(),M.$dirty.value&&c.setDirtyEntry(o,M.$dirty.value),P?.(),j.stop(),j=t();for(let e of N)e.stop();N=[],y?.(),I?.()}function W(){if(q.value)for(let e of Object.values(q.value))e.$watch();M=j.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>J.value.$debounce),f=e(()=>J.value.$deepCompare==null?!1:J.value.$deepCompare),_=e(()=>J.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):J.value.$lazy),y=e(()=>J.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):J.value.$rewardEarly),x=e(()=>J.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):J.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:J.value.$silent==null?h(d.silent)==null?!1:h(d.silent):J.value.$silent),w=e(()=>J.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):J.value.$autoDirty),T=e(()=>{for(let e of Object.values(q.value))if(e.$validating)return!0;return!1}),O=e({get:()=>n.value,set(e){P(),n.value=e,G()}}),A=e(()=>z.value?U.value&&i.value:U.value&&!H.value&&i.value),j=e(()=>ne({field:{$rules:q.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),M=e(()=>ne({field:{$rules:q.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),F=e(()=>j.value.map(e=>e.$message)),I=e(()=>M.value.map(e=>e.$message)),L=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?D(S.value).getDate()!==D(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!k(n.value,S.value,J.value.$deepCompare):S.value!==n.value:!1),R=e(()=>L.value),B=e(()=>re({field:{$rules:q.value}})),V=e(()=>(C.value||o.value)&&!(U.value||H.value)),H=e(()=>a.value||!y.value?Object.entries(q.value).some(([e,t])=>t.$pending):!1),U=e(()=>m?.value&&!Array.isArray(m?.value)&&`$self`in m.value?m?.value.$self?.length>0:p?.value?.length||m?.value?.length?!0:K.value?!1:Object.values(q.value).some(e=>!e.$valid||e.$maybePending)),W=e(()=>s),K=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Y=e(()=>{if(p?.value?.length||K.value||z.value)return!1;if(i.value&&!b(n.value)&&!T.value&&!H.value){if(g)return!m?.value?.length;{let e=Object.values(q.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),X=e(()=>Object.values(q.value).some(e=>e.$haveAsync));function Z(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();Q[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:O,$rules:q,$error:A,$pending:H,$invalid:U,$correct:Y,$errors:F,$ready:V,$silentErrors:I,$anyDirty:o,$tooltips:B,$name:W,$inactive:K,$edited:L,$anyEdited:R}))}),e}),N.push(a)})}let Q={};return{$error:A,$pending:H,$invalid:U,$correct:Y,$debounce:c,$deepCompare:f,$lazy:_,$ready:V,$issues:j,$silentIssues:M,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:X,$shortcuts:Q,$validating:T,$tooltips:B,$dirty:i,processShortcuts:Z,$silentValue:O,$inactive:K}}),G(),F=_(M.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(q.value).forEach(t=>{t.$fieldDirty=e})}),L=_([M.$error,M.$correct,M.$invalid,M.$pending],()=>{Object.values(q.value).forEach(e=>{e.$fieldError=M.$error.value,e.$fieldInvalid=M.$invalid.value,e.$fieldPending=M.$pending.value,e.$fieldCorrect=M.$correct.value})}),I=_(M.$haveAnyAsyncRule,V)}function G(){P=_(n,()=>{M.$autoDirty.value&&!M.$silent.value&&(M.$dirty.value||(M.$dirty.value=!0)),r.value instanceof Function&&B(),(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&R(),M.$clearExternalErrorsOnChange.value&&ee()},{deep:x?!0:U?1:!0})}function K(){Object.values(q.value).forEach(e=>{e.$parse()})}let q=u({}),J=u({});B();function Y(e,t){if(ee(),M.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&ee(),!t)for(let e of Object.values(q.value))e.$reset();if(!M.$lazy.value&&!M.$silent.value&&!t)for(let e of Object.values(q.value))e.$parse()}function X(e=!0,t=!1){M.$dirty.value||(M.$dirty.value=!0),t&&e?(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&R():e&&R()}async function Z(e){try{if(e&&(n.value=e),g)return A?(X(!1),A()):{valid:!1,data:n.value,errors:M.$errors.value,issues:M.$issues.value};let t=n.value;if(!M.$dirty.value)M.$dirty.value=!0;else if(!M.$silent.value&&M.$dirty.value&&!M.$pending.value)return{valid:!M.$error.value,data:t,errors:M.$errors.value,issues:M.$issues.value};return g?{valid:!m?.value?.length,data:t,errors:M.$errors.value,issues:M.$issues.value}:b(q.value)?{valid:!0,data:t,errors:M.$errors.value,issues:M.$issues.value}:{valid:(await Promise.allSettled(Object.values(q.value).map(e=>e.$parse()))).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:M.$errors.value,issues:M.$issues.value}}catch{return{valid:!1,data:n.value,errors:M.$errors.value,issues:M.$issues.value}}}function Q(e=!0){return M.$dirty.value?n.value:e?{_null:!0}:null}function ee(){p?.value?.length&&(p.value=[])}!M.$lazy.value&&!M.$dirty.value&&!M.$silent.value&&R();let{$shortcuts:te,$validating:ie,$autoDirty:ae,$rewardEarly:oe,$clearExternalErrorsOnChange:le,$haveAnyAsyncRule:ue,$debounce:de,$lazy:fe,...$}=M;return l({...$,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:q,...te,$path:a,$isDebouncing:z,$reset:Y,$touch:X,$validate:Z,$unwatch:H,$watch:W,$extractDirtyFields:Q,$clearExternalErrors:ee,...ce(Z)})}function ue({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_}){let v=s.value?.$id??l.$key??G(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=$({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),C}function de({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,originalState:g,shortcuts:y,fieldName:x}){let S=t(),w,T=t(),E,D=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let O=u(),k=u(n.value),A=u({}),j,M,N=u({}),P=o.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Z(e)||typeof e==`function`):!1:!1)})),F(),z();function F(){A.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(O.value=G(),Object.defineProperties(n.value,{$id:{value:O.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(O.value=n.value.$id)),k.value=N.value.$value,Array.isArray(n.value)&&!E.isPrimitiveArray.value?P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=B(r.value.$each,f(()=>t),n);l&&D.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each);return ue({$id:O.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}).filter(e=>!!e):P.value=[],N.value=le({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})}function I(){if(Array.isArray(n.value)&&!E.isPrimitiveArray.value){let t=C(P.value);P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&P.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(O.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=B(r.value.$each,l,n);t&&D.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]);return ue({$id:O.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(O.value,t.toString())})}else P.value=[]}function L(){j=_(n,()=>{M?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!O.value?F():I(),R()},{deep:U?1:!0,flush:`pre`}),R()}function R(){M=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&N.value.$touch(!1,!0)},{flush:`post`})}function z(){L(),S=t(),w=S.run(()=>{let r=e({get:()=>n.value,set(e){j?.(),M?.(),n.value=e,L()}}),i=e(()=>N.value.$dirty&&(!P.value.length||P.value.every(e=>e.$dirty))),o=e(()=>N.value.$anyDirty||P.value.some(e=>e.$anyDirty)),c=e(()=>N.value.$invalid||P.value.some(e=>e.$invalid)),d=e(()=>(b(N.value.$rules)?!0:N.value.$correct)&&(!P.value.length||P.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>N.value.$error||P.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>N.value.$pending||P.value.some(e=>e.$pending)),S=e(()=>!!P.value.length&&P.value.every(e=>e.$edited)),C=e(()=>N.value.$anyEdited||P.value.some(e=>e.$anyEdited)),w=e(()=>({$self:N.value.$issues,$each:P.value.map(e=>e.$issues)})),T=e(()=>({$self:N.value.$errors,$each:P.value.map(e=>e.$errors)})),E=e(()=>({$self:N.value.$silentErrors,$each:P.value.map(e=>e.$silentErrors)})),O=e(()=>A.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):A.value.$rewardEarly),k=e(()=>O.value?!0:A.value.$silent==null?h(s.silent)==null?!1:h(s.silent):A.value.$silent),F=e(()=>A.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):A.value.$autoDirty),I=e(()=>x);function R(){y?.collections&&Object.entries(y?.collections).forEach(([e,s])=>{let h=t();z[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:c,$correct:d,$errors:T,$silentErrors:E,$initialValue:m,$originalValue:g,$ready:p,$anyDirty:o,$name:I,$each:P,$self:N,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),D.push(h)})}let z={};return R(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:I,$shortcuts:z,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:O,$silent:k,$autoDirty:F,$issues:w}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function V(){j?.(),N.value&&N.value.$unwatch(),P.value&&P.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),S.stop(),S=t(),T.stop(),T=t(!0),D.forEach(e=>e.stop()),D=[]}function H(e=!0,t=!1){N.value.$touch(e,t),P.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(V(),!t)if(e?.toOriginalState)n.value=C(g),m.value=C(g);else if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&q(),N.value.$reset(e,t),P.value.forEach(t=>{t.$reset(e,!0)}),t||F()}async function K(e){e&&(n.value=e);let t=n.value;try{return{valid:(await Promise.allSettled([N.value.$validate(e),...P.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function q(){N.value.$clearExternalErrors(),P.value.forEach(e=>{e.$clearExternalErrors()})}function J(e=!0){let t=P.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:Y,...X}=w;return l({$self:N,...X,...Y,$path:a,$each:P,$value:n,$initialValue:m,$originalValue:g,$validate:K,$unwatch:V,$watch:z,$touch:H,$reset:W,$extractDirtyFields:J,$clearExternalErrors:q,...ce(K)})}function fe({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),T,E=[],D=null,O=null,k=null,A=null;async function N(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,$({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,$({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t),h=e(()=>({}));return[t,$({state:l,rulesDef:h,path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));P.value={...l,...u,...d,...p},t&&L()}let P=x.storage.getFieldsEntry(a);N();function F(){s&&(k=_(s,()=>{R(),N()},{deep:!0}))}function I(){A=_(r,()=>{R(),N(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(D?.(),D=_(o,()=>{R(),N()},{deep:!0,flush:`pre`}),F()),d&&(O?.(),O=_(d,()=>{R(),N()},{deep:!0,flush:`post`})),I(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,N(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,N()}}),o=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!te(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>te(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct):!1}),f=e(()=>{let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),F=e(()=>{if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),I=e(()=>{for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),L=e(()=>y);function z(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();H[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:L,$silentErrors:A,$initialValue:m,$errors:k,$fields:P,$edited:F,$anyEdited:I,$issues:O}))}),e}),E.push(p)})}let B=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,j(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,M(t,e)]))}]:[])):{},set(){}}),H={};return z(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:L,$shortcuts:H,$groups:B,$silentValue:a,$edited:F,$anyEdited:I,$localPending:w,$autoDirty:S,$silent:b,$value:n}})}function R(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors()}function B(e,t){if(k?.(),R(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else if(e?.toInitialState)r.value=C({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);for(let t of Object.values(P.value))t?.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||N()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t)}function H(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}async function W(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value};{let e=r.value;return{valid:(await Promise.allSettled(Object.values(P.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e,errors:T.$errors.value,issues:T.$issues.value}}}catch{return{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value}}finally{T.$localPending.value=!1}}let{$shortcuts:G,$localPending:K,...q}=T,J=l({...q,...G,$path:i,$initialValue:m,$originalValue:g,$fields:P,$reset:B,$touch:V,$validate:W,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,...ce(W)});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete J[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function $({rulesDef:e,...n}){if(Y(e,n.state,n.schemaMode))return de({rulesDef:e,...n});if(J(n.state,e)){if(z(n.state))return fe({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return fe({rulesDef:e,...a,state:r.fakeState})}}else if(X(e))return le({rulesDef:i(e.value)?e.value:e,...n})}function pe({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=R(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),J(a,i)?h.value=fe({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):X(i)&&(h.value=le({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch()}),l({regle:h})}function me({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s}){let c=i(n)?n:typeof n==`function`?void 0:e(()=>n),l={...a,...r},f=d(c??{});typeof n==`function`&&v(()=>{f.value=n(t),m(f)});let p=u(w(t.value)?{...C(t.value)}:C(t.value)),h=w(t.value)?{...C(t.value)}:C(t.value);return pe({scopeRules:f,state:t,options:l,initialState:p,originalState:h,customRules:o,shortcuts:s})}function he(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(t,a,o){let s=i(t)?t:u(t);return{r$:me({state:s,rulesFactory:a,options:o,globalOptions:r,customRules:e,shortcuts:n}).regle}}return a}const ge=he();function _e(){function e(e,t){return t}return e}const ve=_e();function ye(e){let t={};if(Object.entries(e).some(([e,t])=>Z(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&w(r)&&`$each`in r&&r.$each&&w(r.$each)?t[n]=[ye(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>Z(t)||typeof t==`function`)?t[n]=ye(r):t[n]=null}return t}function be(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o){let s=i(n)?n:typeof n==`function`?void 0:e(()=>n),c=u(ye(s?.value));return me({state:c,rulesFactory:s,options:o,globalOptions:a,customRules:t,shortcuts:r}).regle}return o}const xe=be();function Se({rules:e,modifiers:t,shortcuts:n}){let r=he(e,t,n),i=be(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n},i.__config={rules:e,modifiers:t,shortcuts:n};let a=_e();return{useRegle:r,inferRules:a,useRules:i}}function Ce(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=he(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=_e();return{useRegle:c,inferRules:l}}function we(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),v=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),y=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),b=e(()=>r?Object.values(t):t);function x(e){Object.values(t).forEach(t=>{t.$reset(e)})}function S(){Object.values(t).forEach(e=>{e.$touch()})}function C(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function w(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function T(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}return l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:b,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:y,$reset:x,$touch:S,$validate:T,$extractDirtyFields:C,$clearExternalErrors:w})}function Te(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return we(t,!n.asRecord)}else return we(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function Ee(t,r){let i=r??ge;return{useScopedRegle:((r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${G()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),K(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}})}}function De(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):q(()=>u({"~~global":{}})))(),{useScopedRegle:n}=Ee(t,e?.customUseRegle),{useCollectScope:r}=Te(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:Oe,useScopedRegle:ke}=De();function Ae(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Z(t))return h(t._params?.[0])===i.value}})||r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function je(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Me(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),je(r.value,t,n)?a.value=r.value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function Ne(e){return e}function Pe(e,t){return n=>T({...e},t(n))}export{A as InternalRuleType,L as createRule,De as createScopedUseRegle,Ae as createVariant,Se as defineRegleConfig,Ne as defineRules,Ce as extendRegleConfig,ae as flatErrors,ve as inferRules,we as mergeRegles,je as narrowVariant,Pe as refineRules,N as unwrapRuleParameters,Oe as useCollectScope,ge as useRegle,pe as useRootStorage,xe as useRules,ke as useScopedRegle,Me as variantToRef};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0-beta.1",
|
|
4
4
|
"description": "Headless form validation library for Vue 3",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"pinia": ">=2.2.5",
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
"optional": true
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@standard-schema/spec": "1.0.0"
|
|
16
|
+
},
|
|
14
17
|
"devDependencies": {
|
|
15
18
|
"@total-typescript/ts-reset": "0.6.1",
|
|
16
19
|
"@types/node": "22.13.14",
|