@regle/core 1.9.0-beta.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +26 -140
- package/dist/regle-core.js +50 -192
- package/dist/regle-core.min.js +1 -1
- package/package.json +1 -4
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:
|
|
1254
|
+
[x: string]: (element: OmitByType<T, Function>) => unknown;
|
|
1255
1255
|
};
|
|
1256
1256
|
type RegleShortcutDefinition<TCustomRules extends Record<string, any> = {}> = {
|
|
1257
1257
|
/**
|
|
@@ -1351,28 +1351,6 @@ 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
|
-
};
|
|
1376
1354
|
/**
|
|
1377
1355
|
* Infer safe output from any `r$` instance
|
|
1378
1356
|
*
|
|
@@ -1384,8 +1362,6 @@ type InferSafeOutput<TRegle extends MaybeRef<RegleRoot<{}, any, any, any>> | May
|
|
|
1384
1362
|
type $InternalRegleResult = {
|
|
1385
1363
|
valid: boolean;
|
|
1386
1364
|
data: any;
|
|
1387
|
-
errors: $InternalRegleErrorTree | $InternalRegleCollectionErrors | string[];
|
|
1388
|
-
issues: $InternalRegleIssuesTree | $InternalRegleCollectionIssues | RegleFieldIssue[];
|
|
1389
1365
|
};
|
|
1390
1366
|
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;
|
|
1391
1367
|
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;
|
|
@@ -1525,64 +1501,6 @@ declare function useRootStorage({
|
|
|
1525
1501
|
regle: $InternalRegleStatusType | undefined;
|
|
1526
1502
|
};
|
|
1527
1503
|
//#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
|
|
1586
1504
|
//#region src/core/useRegle/useErrors.d.ts
|
|
1587
1505
|
/**
|
|
1588
1506
|
* Converts a nested $errors object to a flat array of string errors
|
|
@@ -1591,40 +1509,14 @@ declare namespace StandardSchemaV1 {
|
|
|
1591
1509
|
*/
|
|
1592
1510
|
declare function flatErrors(errors: $InternalRegleErrors, options: {
|
|
1593
1511
|
includePath: true;
|
|
1594
|
-
}):
|
|
1512
|
+
}): {
|
|
1513
|
+
error: string;
|
|
1514
|
+
path: string;
|
|
1515
|
+
}[];
|
|
1595
1516
|
declare function flatErrors(errors: $InternalRegleErrors, options?: {
|
|
1596
1517
|
includePath?: false;
|
|
1597
1518
|
}): string[];
|
|
1598
1519
|
//#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
|
|
1628
1520
|
//#region src/types/utils/props.types.d.ts
|
|
1629
1521
|
/**
|
|
1630
1522
|
* Infer type of the `r$` of any function returning a regle instance
|
|
@@ -1710,7 +1602,7 @@ type HasNamedKeys<T> = IsUnion<T> extends true ? ProcessHasNamedKeys<LazyJoinDis
|
|
|
1710
1602
|
type ProcessHasNamedKeys<T> = { [K in keyof NonNullable<T>]: K extends string ? (string extends K ? never : K) : never }[keyof NonNullable<T>] extends never ? false : true;
|
|
1711
1603
|
//#endregion
|
|
1712
1604
|
//#region src/types/utils/infer.types.d.ts
|
|
1713
|
-
type InferInput<TRules extends MaybeRef<ReglePartialRuleTree<Record<string, any>, any>> | ((state: any) => ReglePartialRuleTree<Record<string, any>, any>)
|
|
1605
|
+
type InferInput<TRules extends MaybeRef<ReglePartialRuleTree<Record<string, any>, any>> | ((state: any) => ReglePartialRuleTree<Record<string, any>, any>), TMarkMaybe extends boolean = true> = IsUnion$1<UnwrapSimple<TRules>> extends true ? InferTupleUnionInput<UnionToTuple<UnwrapSimple<TRules>>>[number] : TMarkMaybe extends true ? Prettify<{ [K in keyof UnwrapSimple<TRules>]?: ProcessInputChildren<UnwrapSimple<TRules>[K], TMarkMaybe> }> : Prettify<{ [K in keyof UnwrapSimple<TRules>]: ProcessInputChildren<UnwrapSimple<TRules>[K], TMarkMaybe> }>;
|
|
1714
1606
|
type ProcessInputChildren<TRule extends unknown, TMarkMaybe extends boolean> = TRule extends {
|
|
1715
1607
|
$each: RegleCollectionEachRules<any, any>;
|
|
1716
1608
|
} ? 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;
|
|
@@ -2048,7 +1940,7 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
2048
1940
|
/** 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). */
|
|
2049
1941
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
2050
1942
|
/** 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). */
|
|
2051
|
-
$validate: (
|
|
1943
|
+
$validate: () => Promise<RegleResult<JoinDiscriminatedUnions<TState>, TRules>>;
|
|
2052
1944
|
} & ProcessNestedFields<TState, TRules, TShortcuts> & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> });
|
|
2053
1945
|
/**
|
|
2054
1946
|
* @internal
|
|
@@ -2062,7 +1954,7 @@ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
|
2062
1954
|
readonly $errors: Record<string, $InternalRegleErrors>;
|
|
2063
1955
|
readonly $silentErrors: Record<string, $InternalRegleErrors>;
|
|
2064
1956
|
$extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
|
|
2065
|
-
$validate: (
|
|
1957
|
+
$validate: () => Promise<$InternalRegleResult>;
|
|
2066
1958
|
}
|
|
2067
1959
|
/**
|
|
2068
1960
|
* @public
|
|
@@ -2124,7 +2016,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
2124
2016
|
/** 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). */
|
|
2125
2017
|
$extractDirtyFields: (filterNullishValues?: boolean) => MaybeOutput<TState>;
|
|
2126
2018
|
/** 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). */
|
|
2127
|
-
$validate: (
|
|
2019
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
2128
2020
|
/** This is reactive tree containing all the declared rules of your field. To know more about the rule properties check the rules properties section */
|
|
2129
2021
|
readonly $rules: ComputeFieldRules<TState, TRules>;
|
|
2130
2022
|
} & ([TShortcuts['fields']] extends [never] ? {} : { [K in keyof TShortcuts['fields']]: ReturnType<NonNullable<TShortcuts['fields']>[K]> });
|
|
@@ -2144,12 +2036,12 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
|
2144
2036
|
readonly $issues: RegleFieldIssue[];
|
|
2145
2037
|
readonly $isDebouncing: boolean;
|
|
2146
2038
|
$extractDirtyFields: (filterNullishValues?: boolean) => any;
|
|
2147
|
-
$validate: (
|
|
2039
|
+
$validate: () => Promise<$InternalRegleResult>;
|
|
2148
2040
|
}
|
|
2149
2041
|
/**
|
|
2150
2042
|
* @public
|
|
2151
2043
|
*/
|
|
2152
|
-
interface RegleCommonStatus<TValue = any>
|
|
2044
|
+
interface RegleCommonStatus<TValue = any> {
|
|
2153
2045
|
/** Indicates whether the field is invalid. It becomes true if any associated rules return false. */
|
|
2154
2046
|
readonly $invalid: boolean;
|
|
2155
2047
|
/**
|
|
@@ -2304,7 +2196,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
2304
2196
|
/** 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). */
|
|
2305
2197
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
2306
2198
|
/** 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). */
|
|
2307
|
-
$validate: (
|
|
2199
|
+
$validate: () => Promise<RegleResult<JoinDiscriminatedUnions<TState>, JoinDiscriminatedUnions<TRules>>>;
|
|
2308
2200
|
} & ([TShortcuts['collections']] extends [never] ? {} : { [K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]> });
|
|
2309
2201
|
/**
|
|
2310
2202
|
* @internal
|
|
@@ -2318,7 +2210,7 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
|
|
|
2318
2210
|
readonly $silentErrors: $InternalRegleCollectionErrors;
|
|
2319
2211
|
readonly $externalErrors?: string[];
|
|
2320
2212
|
$extractDirtyFields: (filterNullishValues?: boolean) => any[];
|
|
2321
|
-
$validate: (
|
|
2213
|
+
$validate: () => Promise<$InternalRegleResult>;
|
|
2322
2214
|
}
|
|
2323
2215
|
//#endregion
|
|
2324
2216
|
//#region src/types/rules/rule.errors.types.d.ts
|
|
@@ -2362,7 +2254,7 @@ type SuperCompatibleRegleRoot = SuperCompatibleRegleStatus & {
|
|
|
2362
2254
|
$groups?: {
|
|
2363
2255
|
[x: string]: RegleValidationGroupOutput;
|
|
2364
2256
|
};
|
|
2365
|
-
$validate: (
|
|
2257
|
+
$validate: () => Promise<SuperCompatibleRegleResult>;
|
|
2366
2258
|
};
|
|
2367
2259
|
type SuperCompatibleRegleResult = $InternalRegleResult;
|
|
2368
2260
|
type SuperCompatibleRegleStatus = {
|
|
@@ -2471,7 +2363,6 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
2471
2363
|
}): {
|
|
2472
2364
|
useRegle: useRegleFn<TCustomRules, TShortcuts>;
|
|
2473
2365
|
inferRules: inferRulesFn<TCustomRules>;
|
|
2474
|
-
useRules: useRulesFn<TCustomRules, TShortcuts>;
|
|
2475
2366
|
};
|
|
2476
2367
|
/**
|
|
2477
2368
|
* Extend an already created custom `useRegle` (as the first parameter)
|
|
@@ -2508,12 +2399,10 @@ type MergedRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TVal
|
|
|
2508
2399
|
readonly $errors: { [K in keyof TRegles]: TRegles[K]['$errors'] };
|
|
2509
2400
|
/** Collection of all the error messages, collected for all children properties. */
|
|
2510
2401
|
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'] };
|
|
2513
2402
|
/** 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). */
|
|
2514
2403
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TValue>;
|
|
2515
2404
|
/** 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). */
|
|
2516
|
-
$validate: (
|
|
2405
|
+
$validate: () => Promise<MergedReglesResult<TRegles>>;
|
|
2517
2406
|
};
|
|
2518
2407
|
type MergedScopedRegles<TValue extends Record<string, unknown>[] = Record<string, unknown>[]> = Omit<MergedRegles<Record<string, SuperCompatibleRegleRoot>, TValue>, '$instances' | '$errors' | '$silentErrors' | '$value' | '$silentValue' | '$validate'> & {
|
|
2519
2408
|
/** Array of scoped Regles instances */
|
|
@@ -2524,16 +2413,10 @@ type MergedScopedRegles<TValue extends Record<string, unknown>[] = Record<string
|
|
|
2524
2413
|
readonly $errors: RegleValidationErrors<Record<string, unknown>>[];
|
|
2525
2414
|
/** Collection of all registered Regles instances silent errors */
|
|
2526
2415
|
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>[];
|
|
2531
2416
|
/** 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). */
|
|
2532
|
-
$validate: (
|
|
2417
|
+
$validate: () => Promise<{
|
|
2533
2418
|
valid: boolean;
|
|
2534
2419
|
data: TValue;
|
|
2535
|
-
errors: RegleValidationErrors<Record<string, unknown>>[];
|
|
2536
|
-
issues: RegleValidationErrors<Record<string, unknown>>[];
|
|
2537
2420
|
}>;
|
|
2538
2421
|
};
|
|
2539
2422
|
type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>> = {
|
|
@@ -2541,15 +2424,11 @@ type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>
|
|
|
2541
2424
|
data: { [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
|
|
2542
2425
|
valid: false;
|
|
2543
2426
|
}>['data'] };
|
|
2544
|
-
errors: { [K in keyof TRegles]: TRegles[K]['$errors'] };
|
|
2545
|
-
issues: { [K in keyof TRegles]: TRegles[K]['$issues'] };
|
|
2546
2427
|
} | {
|
|
2547
2428
|
valid: true;
|
|
2548
2429
|
data: { [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
|
|
2549
2430
|
valid: true;
|
|
2550
2431
|
}>['data'] };
|
|
2551
|
-
errors: EmptyObject;
|
|
2552
|
-
issues: EmptyObject;
|
|
2553
2432
|
};
|
|
2554
2433
|
declare function mergeRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TScoped extends boolean = false>(regles: TRegles, _scoped?: TScoped): TScoped extends false ? MergedRegles<TRegles> : MergedScopedRegles;
|
|
2555
2434
|
//#endregion
|
|
@@ -2636,9 +2515,14 @@ declare function createVariant<TForm extends Record<string, any>, TDiscriminant
|
|
|
2636
2515
|
*/
|
|
2637
2516
|
declare function narrowVariant<TRoot extends {
|
|
2638
2517
|
[x: string]: unknown;
|
|
2518
|
+
$fields: {
|
|
2519
|
+
[x: string]: unknown;
|
|
2520
|
+
};
|
|
2639
2521
|
}, const TKey extends keyof TRoot, const TValue extends (LazyJoinDiscriminatedUnions<Exclude<TRoot[TKey], RegleCollectionStatus<any, any, any> | RegleStatus<any, any, any>>> extends {
|
|
2640
2522
|
$value: infer V;
|
|
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> }
|
|
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
|
+
};
|
|
2642
2526
|
/**
|
|
2643
2527
|
* Narrow a nested variant root to a reactive reference
|
|
2644
2528
|
*
|
|
@@ -2650,7 +2534,9 @@ declare function narrowVariant<TRoot extends {
|
|
|
2650
2534
|
*/
|
|
2651
2535
|
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 {
|
|
2652
2536
|
$value: infer V;
|
|
2653
|
-
} ? V : unknown)>(root: MaybeRef<TRoot>, discriminantKey: TKey, discriminantValue: TValue): Ref<Extract<TRoot
|
|
2537
|
+
} ? V : unknown)>(root: MaybeRef<TRoot>, discriminantKey: TKey, discriminantValue: TValue): Ref<(Extract<TRoot, { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> }> & {
|
|
2538
|
+
$fields: Extract<TRoot['$fields'], { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> }>;
|
|
2539
|
+
}) | undefined>;
|
|
2654
2540
|
//#endregion
|
|
2655
2541
|
//#region src/core/refineRules.d.ts
|
|
2656
2542
|
/**
|
|
@@ -2680,4 +2566,4 @@ declare function defineRules<TRules extends RegleUnknownRulesTree>(rules: TRules
|
|
|
2680
2566
|
*/
|
|
2681
2567
|
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>;
|
|
2682
2568
|
//#endregion
|
|
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,
|
|
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 };
|
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
|
+
error: 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
|
+
error: err,
|
|
724
|
+
path: path?.join(".") ?? ""
|
|
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
|
+
error: err,
|
|
730
|
+
path: path.join(".")
|
|
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.toString()))) ?? [];
|
|
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,23 +911,6 @@ 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
|
-
|
|
931
914
|
//#endregion
|
|
932
915
|
//#region src/core/useRegle/root/createReactiveFieldStatus.ts
|
|
933
916
|
function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cachePath, fieldName, storage, options, externalErrors, schemaErrors, schemaMode, onUnwatch, $isArray, initialState, originalState, shortcuts, onValidate }) {
|
|
@@ -950,7 +933,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
950
933
|
const rules = rulesDef.value;
|
|
951
934
|
const entries = [];
|
|
952
935
|
for (const ruleKey in rules) {
|
|
953
|
-
if (ruleKey.startsWith("$")
|
|
936
|
+
if (ruleKey.startsWith("$")) continue;
|
|
954
937
|
const rule = rules[ruleKey];
|
|
955
938
|
if (!rule) continue;
|
|
956
939
|
const ruleRef = toRef(() => rule);
|
|
@@ -1257,50 +1240,37 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1257
1240
|
if (!scopeState.$silent.value || scopeState.$rewardEarly.value && scopeState.$error.value) $commit();
|
|
1258
1241
|
} else if (runCommit) $commit();
|
|
1259
1242
|
}
|
|
1260
|
-
async function $validate(
|
|
1243
|
+
async function $validate() {
|
|
1261
1244
|
try {
|
|
1262
|
-
if (forceValues) state.value = forceValues;
|
|
1263
1245
|
if (schemaMode) if (onValidate) {
|
|
1264
1246
|
$touch(false);
|
|
1265
1247
|
return onValidate();
|
|
1266
1248
|
} else return {
|
|
1267
1249
|
valid: false,
|
|
1268
|
-
data: state.value
|
|
1269
|
-
errors: scopeState.$errors.value,
|
|
1270
|
-
issues: scopeState.$issues.value
|
|
1250
|
+
data: state.value
|
|
1271
1251
|
};
|
|
1272
1252
|
const data = state.value;
|
|
1273
1253
|
if (!scopeState.$dirty.value) scopeState.$dirty.value = true;
|
|
1274
1254
|
else if (!scopeState.$silent.value && scopeState.$dirty.value && !scopeState.$pending.value) return {
|
|
1275
1255
|
valid: !scopeState.$error.value,
|
|
1276
|
-
data
|
|
1277
|
-
errors: scopeState.$errors.value,
|
|
1278
|
-
issues: scopeState.$issues.value
|
|
1256
|
+
data
|
|
1279
1257
|
};
|
|
1280
1258
|
if (schemaMode) return {
|
|
1281
1259
|
valid: !schemaErrors?.value?.length,
|
|
1282
|
-
data
|
|
1283
|
-
errors: scopeState.$errors.value,
|
|
1284
|
-
issues: scopeState.$issues.value
|
|
1260
|
+
data
|
|
1285
1261
|
};
|
|
1286
1262
|
else if (isEmpty($rules.value)) return {
|
|
1287
1263
|
valid: true,
|
|
1288
|
-
data
|
|
1289
|
-
errors: scopeState.$errors.value,
|
|
1290
|
-
issues: scopeState.$issues.value
|
|
1264
|
+
data
|
|
1291
1265
|
};
|
|
1292
1266
|
return {
|
|
1293
1267
|
valid: (await Promise.allSettled(Object.values($rules.value).map((rule) => rule.$parse()))).every((value) => value.status === "fulfilled" && value.value === true),
|
|
1294
|
-
data
|
|
1295
|
-
errors: scopeState.$errors.value,
|
|
1296
|
-
issues: scopeState.$issues.value
|
|
1268
|
+
data
|
|
1297
1269
|
};
|
|
1298
1270
|
} catch {
|
|
1299
1271
|
return {
|
|
1300
1272
|
valid: false,
|
|
1301
|
-
data: state.value
|
|
1302
|
-
errors: scopeState.$errors.value,
|
|
1303
|
-
issues: scopeState.$issues.value
|
|
1273
|
+
data: state.value
|
|
1304
1274
|
};
|
|
1305
1275
|
}
|
|
1306
1276
|
}
|
|
@@ -1330,8 +1300,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1330
1300
|
$unwatch,
|
|
1331
1301
|
$watch,
|
|
1332
1302
|
$extractDirtyFields,
|
|
1333
|
-
$clearExternalErrors
|
|
1334
|
-
...createStandardSchema($validate)
|
|
1303
|
+
$clearExternalErrors
|
|
1335
1304
|
});
|
|
1336
1305
|
}
|
|
1337
1306
|
|
|
@@ -1711,27 +1680,22 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1711
1680
|
});
|
|
1712
1681
|
if (!fromParent) createStatus();
|
|
1713
1682
|
}
|
|
1714
|
-
async function $validate(
|
|
1715
|
-
if (forceValues) state.value = forceValues;
|
|
1683
|
+
async function $validate() {
|
|
1716
1684
|
const data = state.value;
|
|
1717
1685
|
try {
|
|
1718
1686
|
return {
|
|
1719
|
-
valid: (await Promise.allSettled([$selfStatus.value.$validate(
|
|
1687
|
+
valid: (await Promise.allSettled([$selfStatus.value.$validate(), ...$eachStatus.value.map((status) => {
|
|
1720
1688
|
return status.$validate();
|
|
1721
1689
|
})])).every((value) => {
|
|
1722
1690
|
if (value.status === "fulfilled") return value.value.valid === true;
|
|
1723
1691
|
else return false;
|
|
1724
1692
|
}),
|
|
1725
|
-
data
|
|
1726
|
-
errors: scopeState.$errors.value,
|
|
1727
|
-
issues: scopeState.$issues.value
|
|
1693
|
+
data
|
|
1728
1694
|
};
|
|
1729
1695
|
} catch {
|
|
1730
1696
|
return {
|
|
1731
1697
|
valid: false,
|
|
1732
|
-
data
|
|
1733
|
-
errors: scopeState.$errors.value,
|
|
1734
|
-
issues: scopeState.$issues.value
|
|
1698
|
+
data
|
|
1735
1699
|
};
|
|
1736
1700
|
}
|
|
1737
1701
|
}
|
|
@@ -1768,8 +1732,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1768
1732
|
$touch,
|
|
1769
1733
|
$reset,
|
|
1770
1734
|
$extractDirtyFields,
|
|
1771
|
-
$clearExternalErrors
|
|
1772
|
-
...createStandardSchema($validate)
|
|
1735
|
+
$clearExternalErrors
|
|
1773
1736
|
});
|
|
1774
1737
|
}
|
|
1775
1738
|
|
|
@@ -2146,34 +2109,27 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2146
2109
|
if (filterNullishValues) dirtyFields = filterNullishFields(dirtyFields);
|
|
2147
2110
|
return Object.fromEntries(dirtyFields);
|
|
2148
2111
|
}
|
|
2149
|
-
async function $validate(
|
|
2112
|
+
async function $validate() {
|
|
2150
2113
|
try {
|
|
2151
|
-
if (forceValues) state.value = forceValues;
|
|
2152
2114
|
if (commonArgs.schemaMode) if (commonArgs.onValidate) {
|
|
2153
2115
|
$touch(false);
|
|
2154
2116
|
scopeState.$localPending.value = true;
|
|
2155
2117
|
return commonArgs.onValidate();
|
|
2156
2118
|
} else return {
|
|
2157
2119
|
valid: false,
|
|
2158
|
-
data: state.value
|
|
2159
|
-
errors: scopeState.$errors.value,
|
|
2160
|
-
issues: scopeState.$issues.value
|
|
2120
|
+
data: state.value
|
|
2161
2121
|
};
|
|
2162
2122
|
else {
|
|
2163
2123
|
const data = state.value;
|
|
2164
2124
|
return {
|
|
2165
2125
|
valid: (await Promise.allSettled(Object.values($fields.value).map((statusOrField) => statusOrField.$validate()))).every((value) => value.status === "fulfilled" && value?.value.valid === true),
|
|
2166
|
-
data
|
|
2167
|
-
errors: scopeState.$errors.value,
|
|
2168
|
-
issues: scopeState.$issues.value
|
|
2126
|
+
data
|
|
2169
2127
|
};
|
|
2170
2128
|
}
|
|
2171
2129
|
} catch {
|
|
2172
2130
|
return {
|
|
2173
2131
|
valid: false,
|
|
2174
|
-
data: state.value
|
|
2175
|
-
errors: scopeState.$errors.value,
|
|
2176
|
-
issues: scopeState.$issues.value
|
|
2132
|
+
data: state.value
|
|
2177
2133
|
};
|
|
2178
2134
|
} finally {
|
|
2179
2135
|
scopeState.$localPending.value = false;
|
|
@@ -2193,11 +2149,10 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2193
2149
|
$unwatch,
|
|
2194
2150
|
$watch,
|
|
2195
2151
|
$clearExternalErrors,
|
|
2196
|
-
$extractDirtyFields
|
|
2197
|
-
...createStandardSchema($validate)
|
|
2152
|
+
$extractDirtyFields
|
|
2198
2153
|
});
|
|
2199
2154
|
watchEffect(() => {
|
|
2200
|
-
for (const key of Object.keys(fullStatus).filter((key$1) => !key$1.startsWith("$")
|
|
2155
|
+
for (const key of Object.keys(fullStatus).filter((key$1) => !key$1.startsWith("$"))) delete fullStatus[key];
|
|
2201
2156
|
for (const field of Object.values($fields.value)) if (field?.$name) Object.assign(fullStatus, { [field.$name]: field });
|
|
2202
2157
|
});
|
|
2203
2158
|
return fullStatus;
|
|
@@ -2308,32 +2263,6 @@ function useRootStorage({ initialState, originalState, options, scopeRules, stat
|
|
|
2308
2263
|
return reactive({ regle });
|
|
2309
2264
|
}
|
|
2310
2265
|
|
|
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
|
-
|
|
2337
2266
|
//#endregion
|
|
2338
2267
|
//#region src/core/useRegle/useRegle.ts
|
|
2339
2268
|
function createUseRegleComposable(customRules, options, shortcuts) {
|
|
@@ -2345,12 +2274,25 @@ function createUseRegleComposable(customRules, options, shortcuts) {
|
|
|
2345
2274
|
clearExternalErrorsOnChange: options?.clearExternalErrorsOnChange
|
|
2346
2275
|
};
|
|
2347
2276
|
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
|
+
};
|
|
2348
2282
|
const processedState = isRef(state) ? state : ref(state);
|
|
2349
|
-
|
|
2283
|
+
const watchableRulesGetters = shallowRef(definedRules ?? {});
|
|
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,
|
|
2350
2292
|
state: processedState,
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2293
|
+
options: resolvedOptions,
|
|
2294
|
+
initialState,
|
|
2295
|
+
originalState,
|
|
2354
2296
|
customRules,
|
|
2355
2297
|
shortcuts
|
|
2356
2298
|
}).regle };
|
|
@@ -2395,60 +2337,6 @@ function createInferRuleHelper() {
|
|
|
2395
2337
|
*/
|
|
2396
2338
|
const inferRules = createInferRuleHelper();
|
|
2397
2339
|
|
|
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
|
-
|
|
2452
2340
|
//#endregion
|
|
2453
2341
|
//#region src/core/defineRegleConfig.ts
|
|
2454
2342
|
/**
|
|
@@ -2465,22 +2353,15 @@ const useRules = createUseRulesComposable();
|
|
|
2465
2353
|
*/
|
|
2466
2354
|
function defineRegleConfig({ rules, modifiers, shortcuts }) {
|
|
2467
2355
|
const useRegle$1 = createUseRegleComposable(rules, modifiers, shortcuts);
|
|
2468
|
-
const useRules$1 = createUseRulesComposable(rules, modifiers, shortcuts);
|
|
2469
2356
|
useRegle$1.__config = {
|
|
2470
2357
|
rules,
|
|
2471
2358
|
modifiers,
|
|
2472
2359
|
shortcuts
|
|
2473
2360
|
};
|
|
2474
|
-
useRules$1.__config = {
|
|
2475
|
-
rules,
|
|
2476
|
-
modifiers,
|
|
2477
|
-
shortcuts
|
|
2478
|
-
};
|
|
2479
2361
|
const inferRules$1 = createInferRuleHelper();
|
|
2480
2362
|
return {
|
|
2481
2363
|
useRegle: useRegle$1,
|
|
2482
|
-
inferRules: inferRules$1
|
|
2483
|
-
useRules: useRules$1
|
|
2364
|
+
inferRules: inferRules$1
|
|
2484
2365
|
};
|
|
2485
2366
|
}
|
|
2486
2367
|
/**
|
|
@@ -2571,22 +2452,6 @@ function mergeRegles(regles, _scoped) {
|
|
|
2571
2452
|
return regle?.$pending;
|
|
2572
2453
|
});
|
|
2573
2454
|
});
|
|
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
|
-
});
|
|
2590
2455
|
const $errors = computed(() => {
|
|
2591
2456
|
if (scoped) return Object.entries(regles).map(([_, regle]) => {
|
|
2592
2457
|
return regle.$errors;
|
|
@@ -2636,9 +2501,8 @@ function mergeRegles(regles, _scoped) {
|
|
|
2636
2501
|
regle.$clearExternalErrors();
|
|
2637
2502
|
});
|
|
2638
2503
|
}
|
|
2639
|
-
async function $validate(
|
|
2504
|
+
async function $validate() {
|
|
2640
2505
|
try {
|
|
2641
|
-
if (forceValues) $value.value = forceValues;
|
|
2642
2506
|
const data = $value.value;
|
|
2643
2507
|
return {
|
|
2644
2508
|
valid: (await Promise.allSettled(Object.values(regles).map((regle) => {
|
|
@@ -2647,24 +2511,18 @@ function mergeRegles(regles, _scoped) {
|
|
|
2647
2511
|
if (value.status === "fulfilled") return value.value.valid === true;
|
|
2648
2512
|
else return false;
|
|
2649
2513
|
}),
|
|
2650
|
-
data
|
|
2651
|
-
errors: $errors.value,
|
|
2652
|
-
issues: $issues.value
|
|
2514
|
+
data
|
|
2653
2515
|
};
|
|
2654
2516
|
} catch {
|
|
2655
2517
|
return {
|
|
2656
2518
|
valid: false,
|
|
2657
|
-
data: $value.value
|
|
2658
|
-
errors: $errors.value,
|
|
2659
|
-
issues: $issues.value
|
|
2519
|
+
data: $value.value
|
|
2660
2520
|
};
|
|
2661
2521
|
}
|
|
2662
2522
|
}
|
|
2663
2523
|
return reactive({
|
|
2664
2524
|
...!scoped && { $silentValue },
|
|
2665
2525
|
$errors,
|
|
2666
|
-
$issues,
|
|
2667
|
-
$silentIssues,
|
|
2668
2526
|
$silentErrors,
|
|
2669
2527
|
$instances,
|
|
2670
2528
|
$value,
|
|
@@ -2846,7 +2704,7 @@ function variantToRef(root, discriminantKey, discriminantValue) {
|
|
|
2846
2704
|
const returnedRef = ref();
|
|
2847
2705
|
watch(fromRoot, async () => {
|
|
2848
2706
|
await nextTick();
|
|
2849
|
-
if (narrowVariant(fromRoot.value, discriminantKey, discriminantValue)) returnedRef.value =
|
|
2707
|
+
if (narrowVariant(fromRoot.value, discriminantKey, discriminantValue)) returnedRef.value = toRef(root).value;
|
|
2850
2708
|
else returnedRef.value = void 0;
|
|
2851
2709
|
}, {
|
|
2852
2710
|
immediate: true,
|
|
@@ -2889,4 +2747,4 @@ function refineRules(rules, refinement) {
|
|
|
2889
2747
|
}
|
|
2890
2748
|
|
|
2891
2749
|
//#endregion
|
|
2892
|
-
export { InternalRuleType, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage,
|
|
2750
|
+
export { InternalRuleType, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, 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=>({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};
|
|
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};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.9.0
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Headless form validation library for Vue 3",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"pinia": ">=2.2.5",
|
|
@@ -11,9 +11,6 @@
|
|
|
11
11
|
"optional": true
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
|
-
"dependencies": {
|
|
15
|
-
"@standard-schema/spec": "1.0.0"
|
|
16
|
-
},
|
|
17
14
|
"devDependencies": {
|
|
18
15
|
"@total-typescript/ts-reset": "0.6.1",
|
|
19
16
|
"@types/node": "22.13.14",
|