@regle/core 1.7.2 → 1.8.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +45 -429
- package/dist/regle-core.js +56 -14
- package/dist/regle-core.min.js +1 -1
- package/package.json +1 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -330,7 +330,7 @@ const anyA = get(anyObject, 'a');
|
|
|
330
330
|
@category Type Guard
|
|
331
331
|
@category Utilities
|
|
332
332
|
*/
|
|
333
|
-
type IsAny
|
|
333
|
+
type IsAny<T> = 0 extends 1 & NoInfer<T> ? true : false;
|
|
334
334
|
//#endregion
|
|
335
335
|
//#region ../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/is-equal.d.ts
|
|
336
336
|
/**
|
|
@@ -653,7 +653,7 @@ type ShouldBeBar = IfAny<'not any', 'foo', 'bar'>;
|
|
|
653
653
|
@category Type Guard
|
|
654
654
|
@category Utilities
|
|
655
655
|
*/
|
|
656
|
-
type IfAny$1<T, TypeIfAny = true, TypeIfNotAny = false> = (IsAny
|
|
656
|
+
type IfAny$1<T, TypeIfAny = true, TypeIfNotAny = false> = (IsAny<T> extends true ? TypeIfAny : TypeIfNotAny);
|
|
657
657
|
//#endregion
|
|
658
658
|
//#region ../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/type.d.ts
|
|
659
659
|
/**
|
|
@@ -725,7 +725,7 @@ type C = IfNotAnyOrNever<never, 'VALID', 'IS_ANY', 'IS_NEVER'>;
|
|
|
725
725
|
//=> 'IS_NEVER'
|
|
726
726
|
```
|
|
727
727
|
*/
|
|
728
|
-
type IfNotAnyOrNever<T, IfNotAnyOrNever, IfAny = any, IfNever = never> = IsAny
|
|
728
|
+
type IfNotAnyOrNever<T, IfNotAnyOrNever, IfAny = any, IfNever = never> = IsAny<T> extends true ? IfAny : IsNever$1<T> extends true ? IfNever : IfNotAnyOrNever;
|
|
729
729
|
//#endregion
|
|
730
730
|
//#region ../../node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/internal/object.d.ts
|
|
731
731
|
/**
|
|
@@ -1266,11 +1266,21 @@ type InferDeepReactiveState<TState> = NonNullable<TState> extends Array<infer U
|
|
|
1266
1266
|
//#region src/types/core/reset.types.d.ts
|
|
1267
1267
|
type ResetOptions<TState extends unknown> = RequireOneOrNone<{
|
|
1268
1268
|
/**
|
|
1269
|
-
* Reset validation status and reset form state to its initial state
|
|
1269
|
+
* Reset validation status and reset form state to its initial state.
|
|
1270
|
+
*
|
|
1271
|
+
* Initial state is different than the original state as the initial state can be mutated when using `$reset`.
|
|
1272
|
+
*
|
|
1273
|
+
* This serve as the base comparison state for `$edited` property.
|
|
1270
1274
|
*
|
|
1271
1275
|
* ⚠️ This doesn't work if the state is a `reactive` object.
|
|
1272
1276
|
*/
|
|
1273
1277
|
toInitialState?: boolean;
|
|
1278
|
+
/**
|
|
1279
|
+
* Reset validation status and reset form state to its original state.
|
|
1280
|
+
*
|
|
1281
|
+
* Original state is the unmutated state that was passed to the form when it was initialized.
|
|
1282
|
+
*/
|
|
1283
|
+
toOriginalState?: boolean;
|
|
1274
1284
|
/**
|
|
1275
1285
|
* Reset validation status and reset form state to the given state
|
|
1276
1286
|
* Also set the new state as the initial state.
|
|
@@ -1292,10 +1302,10 @@ type ScopedInstancesRecordLike = Partial<ScopedInstancesRecord>;
|
|
|
1292
1302
|
type PartialFormState<TState extends Record<string, any>> = [unknown] extends [TState] ? {} : Prettify<{ [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? never : TState[K] extends Array<any> ? never : K]?: MaybeOutput<TState[K]> } & { [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? K : TState[K] extends Array<any> ? K : never]: NonNullable<TState[K]> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : PartialFormState<TState[K]> }>;
|
|
1293
1303
|
type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = {
|
|
1294
1304
|
valid: false;
|
|
1295
|
-
data: IsUnknown<Data> extends true ? unknown : IsAny
|
|
1305
|
+
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Date | File ? MaybeOutput<Data> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : MaybeOutput<Data> : unknown;
|
|
1296
1306
|
} | {
|
|
1297
1307
|
valid: true;
|
|
1298
|
-
data: IsUnknown<Data> extends true ? unknown : IsAny
|
|
1308
|
+
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;
|
|
1299
1309
|
};
|
|
1300
1310
|
/**
|
|
1301
1311
|
* Infer safe output from any `r$` instance
|
|
@@ -1327,24 +1337,6 @@ type Not<T extends boolean> = T extends true ? false : true;
|
|
|
1327
1337
|
* {@linkcode Types} array is `true`, otherwise returns `false`.
|
|
1328
1338
|
*/
|
|
1329
1339
|
|
|
1330
|
-
/**
|
|
1331
|
-
* Checks if all the boolean types in the {@linkcode Types} array are `true`.
|
|
1332
|
-
*/
|
|
1333
|
-
type And<Types extends boolean[]> = Types[number] extends true ? true : false;
|
|
1334
|
-
/**
|
|
1335
|
-
* Represents an equality type that returns {@linkcode Right} if
|
|
1336
|
-
* {@linkcode Left} is `true`,
|
|
1337
|
-
* otherwise returns the negation of {@linkcode Right}.
|
|
1338
|
-
*/
|
|
1339
|
-
|
|
1340
|
-
/**
|
|
1341
|
-
* @internal
|
|
1342
|
-
*/
|
|
1343
|
-
declare const secret: unique symbol;
|
|
1344
|
-
/**
|
|
1345
|
-
* @internal
|
|
1346
|
-
*/
|
|
1347
|
-
type Secret = typeof secret;
|
|
1348
1340
|
/**
|
|
1349
1341
|
* Checks if the given type is `never`.
|
|
1350
1342
|
*/
|
|
@@ -1352,47 +1344,7 @@ type IsNever<T> = [T] extends [never] ? true : false;
|
|
|
1352
1344
|
/**
|
|
1353
1345
|
* Checks if the given type is `any`.
|
|
1354
1346
|
*/
|
|
1355
|
-
type IsAny<T> = [T] extends [Secret] ? Not<IsNever<T>> : false;
|
|
1356
|
-
/**
|
|
1357
|
-
* Determines if the given type is `unknown`.
|
|
1358
|
-
*/
|
|
1359
|
-
type IsUnknown$1<T> = [unknown] extends [T] ? Not<IsAny<T>> : false;
|
|
1360
|
-
/**
|
|
1361
|
-
* Determines if a type is either `never` or `any`.
|
|
1362
|
-
*/
|
|
1363
1347
|
|
|
1364
|
-
/**
|
|
1365
|
-
* Subjective "useful" keys from a type. For objects it's just `keyof` but for
|
|
1366
|
-
* tuples/arrays it's the number keys.
|
|
1367
|
-
*
|
|
1368
|
-
* @example
|
|
1369
|
-
* ```ts
|
|
1370
|
-
* UsefulKeys<{ a: 1; b: 2 }> // 'a' | 'b'
|
|
1371
|
-
*
|
|
1372
|
-
* UsefulKeys<['a', 'b']> // '0' | '1'
|
|
1373
|
-
*
|
|
1374
|
-
* UsefulKeys<string[]> // number
|
|
1375
|
-
* ```
|
|
1376
|
-
*/
|
|
1377
|
-
type UsefulKeys<T> = T extends any[] ? { [K in keyof T]: K }[number] : keyof T;
|
|
1378
|
-
/**
|
|
1379
|
-
* Extracts the keys from a type that are required (not optional).
|
|
1380
|
-
*/
|
|
1381
|
-
type RequiredKeys<T> = Extract<{ [K in keyof T]-?: {} extends Pick<T, K> ? never : K }[keyof T], keyof T>;
|
|
1382
|
-
/**
|
|
1383
|
-
* Gets the keys of an object type that are optional.
|
|
1384
|
-
*/
|
|
1385
|
-
type OptionalKeys<T> = Exclude<keyof T, RequiredKeys<T>>;
|
|
1386
|
-
/**
|
|
1387
|
-
* Extracts the keys from a type that are not `readonly`.
|
|
1388
|
-
*/
|
|
1389
|
-
type ReadonlyKeys<T> = Extract<{ [K in keyof T]-?: ReadonlyEquivalent<{ [_K in K]: T[K] }, { -readonly [_K in K]: T[K] }> extends true ? never : K }[keyof T], keyof T>;
|
|
1390
|
-
/**
|
|
1391
|
-
* Determines if two types, are equivalent in a `readonly` manner.
|
|
1392
|
-
*
|
|
1393
|
-
* @internal
|
|
1394
|
-
*/
|
|
1395
|
-
type ReadonlyEquivalent<X, Y> = Extends<(<T>() => T extends X ? true : false), (<T>() => T extends Y ? true : false)>;
|
|
1396
1348
|
/**
|
|
1397
1349
|
* Checks if one type extends another. Note: this is not quite the same as `Left extends Right` because:
|
|
1398
1350
|
* 1. If either type is `never`, the result is `true` iff the other type is also `never`.
|
|
@@ -1404,24 +1356,6 @@ type Extends<Left, Right> = IsNever<Left> extends true ? IsNever<Right> : [Left]
|
|
|
1404
1356
|
* excluding `any` or `never`.
|
|
1405
1357
|
*/
|
|
1406
1358
|
|
|
1407
|
-
/**
|
|
1408
|
-
* Checks if two types are strictly equal using
|
|
1409
|
-
* the TypeScript internal identical-to operator.
|
|
1410
|
-
*
|
|
1411
|
-
* @see {@link https://github.com/microsoft/TypeScript/issues/55188#issuecomment-1656328122 | much history}
|
|
1412
|
-
*/
|
|
1413
|
-
type StrictEqualUsingTSInternalIdenticalToOperator<L, R> = (<T>() => T extends (L & T) | T ? true : false) extends (<T>() => T extends (R & T) | T ? true : false) ? IsNever<L> extends IsNever<R> ? true : false : false;
|
|
1414
|
-
/**
|
|
1415
|
-
* Checks that {@linkcode Left} and {@linkcode Right} extend each other.
|
|
1416
|
-
* Not quite the same as an equality check since `any` can make it resolve
|
|
1417
|
-
* to `true`. So should only be used when {@linkcode Left} and
|
|
1418
|
-
* {@linkcode Right} are known to avoid `any`.
|
|
1419
|
-
*/
|
|
1420
|
-
type MutuallyExtends<Left, Right> = And<[Extends<Left, Right>, Extends<Right, Left>]>;
|
|
1421
|
-
/**
|
|
1422
|
-
* @internal
|
|
1423
|
-
*/
|
|
1424
|
-
|
|
1425
1359
|
/**
|
|
1426
1360
|
* Convert a union to an intersection.
|
|
1427
1361
|
* `A | B | C` -\> `A & B & C`
|
|
@@ -1456,344 +1390,6 @@ type IsUnion<T> = Not<Extends<UnionToTuple$1<T>['length'], 1>>;
|
|
|
1456
1390
|
* ```
|
|
1457
1391
|
*/
|
|
1458
1392
|
//#endregion
|
|
1459
|
-
//#region ../../node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/overloads.d.ts
|
|
1460
|
-
/**
|
|
1461
|
-
* The simple(ish) way to get overload info from a function
|
|
1462
|
-
* {@linkcode FunctionType}. Recent versions of TypeScript will match any
|
|
1463
|
-
* function against a generic 10-overload type, filling in slots with
|
|
1464
|
-
* duplicates of the function. So, we can just match against a single type
|
|
1465
|
-
* and get all the overloads.
|
|
1466
|
-
*
|
|
1467
|
-
* For older versions of TypeScript, we'll need to painstakingly do
|
|
1468
|
-
* ten separate matches.
|
|
1469
|
-
*/
|
|
1470
|
-
type TSPost53OverloadsInfoUnion<FunctionType> = FunctionType extends {
|
|
1471
|
-
(...args: infer A1): infer R1;
|
|
1472
|
-
(...args: infer A2): infer R2;
|
|
1473
|
-
(...args: infer A3): infer R3;
|
|
1474
|
-
(...args: infer A4): infer R4;
|
|
1475
|
-
(...args: infer A5): infer R5;
|
|
1476
|
-
(...args: infer A6): infer R6;
|
|
1477
|
-
(...args: infer A7): infer R7;
|
|
1478
|
-
(...args: infer A8): infer R8;
|
|
1479
|
-
(...args: infer A9): infer R9;
|
|
1480
|
-
(...args: infer A10): infer R10;
|
|
1481
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) | ((...p: A5) => R5) | ((...p: A6) => R6) | ((...p: A7) => R7) | ((...p: A8) => R8) | ((...p: A9) => R9) | ((...p: A10) => R10) : never;
|
|
1482
|
-
/**
|
|
1483
|
-
* A function with `unknown` parameters and return type.
|
|
1484
|
-
*/
|
|
1485
|
-
type UnknownFunction = (...args: unknown[]) => unknown;
|
|
1486
|
-
/**
|
|
1487
|
-
* `true` iff {@linkcode FunctionType} is
|
|
1488
|
-
* equivalent to `(...args: unknown[]) => unknown`,
|
|
1489
|
-
* which is what an overload variant looks like for a non-existent overload.
|
|
1490
|
-
* This is useful because older versions of TypeScript end up with
|
|
1491
|
-
* 9 "useless" overloads and one real one for parameterless/generic functions.
|
|
1492
|
-
*
|
|
1493
|
-
* @see {@link https://github.com/microsoft/TypeScript/issues/28867 | Related}
|
|
1494
|
-
*/
|
|
1495
|
-
type IsUselessOverloadInfo<FunctionType> = StrictEqualUsingTSInternalIdenticalToOperator<FunctionType, UnknownFunction>;
|
|
1496
|
-
/**
|
|
1497
|
-
* Old versions of TypeScript can sometimes seem to refuse to separate out
|
|
1498
|
-
* union members unless you put them each in a pointless tuple and add an
|
|
1499
|
-
* extra `infer X` expression. There may be a better way to work around this
|
|
1500
|
-
* problem, but since it's not a problem in newer versions of TypeScript,
|
|
1501
|
-
* it's not a priority right now.
|
|
1502
|
-
*/
|
|
1503
|
-
type Tuplify<Union> = Union extends infer X ? [X] : never;
|
|
1504
|
-
/**
|
|
1505
|
-
* For older versions of TypeScript, we need two separate workarounds
|
|
1506
|
-
* to get overload info. First, we need need to use
|
|
1507
|
-
* {@linkcode DecreasingOverloadsInfoUnion} to get the overload info for
|
|
1508
|
-
* functions with 1-10 overloads. Then, we need to filter out the
|
|
1509
|
-
* "useless" overloads that are present in older versions of TypeScript,
|
|
1510
|
-
* for parameterless functions. To do this we use
|
|
1511
|
-
* {@linkcode IsUselessOverloadInfo} to remove useless overloads.
|
|
1512
|
-
*
|
|
1513
|
-
* @see {@link https://github.com/microsoft/TypeScript/issues/28867 | Related}
|
|
1514
|
-
*/
|
|
1515
|
-
type TSPre53OverloadsInfoUnion<FunctionType> = Tuplify<DecreasingOverloadsInfoUnion<FunctionType>> extends infer Tup ? Tup extends [infer Fn] ? IsUselessOverloadInfo<Fn> extends true ? never : Fn : never : never;
|
|
1516
|
-
/**
|
|
1517
|
-
* For versions of TypeScript below 5.3, we need to check for 10 overloads,
|
|
1518
|
-
* then 9, then 8, etc., to get a union of the overload variants.
|
|
1519
|
-
*/
|
|
1520
|
-
type DecreasingOverloadsInfoUnion<F> = F extends {
|
|
1521
|
-
(...args: infer A1): infer R1;
|
|
1522
|
-
(...args: infer A2): infer R2;
|
|
1523
|
-
(...args: infer A3): infer R3;
|
|
1524
|
-
(...args: infer A4): infer R4;
|
|
1525
|
-
(...args: infer A5): infer R5;
|
|
1526
|
-
(...args: infer A6): infer R6;
|
|
1527
|
-
(...args: infer A7): infer R7;
|
|
1528
|
-
(...args: infer A8): infer R8;
|
|
1529
|
-
(...args: infer A9): infer R9;
|
|
1530
|
-
(...args: infer A10): infer R10;
|
|
1531
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) | ((...p: A5) => R5) | ((...p: A6) => R6) | ((...p: A7) => R7) | ((...p: A8) => R8) | ((...p: A9) => R9) | ((...p: A10) => R10) : F extends {
|
|
1532
|
-
(...args: infer A1): infer R1;
|
|
1533
|
-
(...args: infer A2): infer R2;
|
|
1534
|
-
(...args: infer A3): infer R3;
|
|
1535
|
-
(...args: infer A4): infer R4;
|
|
1536
|
-
(...args: infer A5): infer R5;
|
|
1537
|
-
(...args: infer A6): infer R6;
|
|
1538
|
-
(...args: infer A7): infer R7;
|
|
1539
|
-
(...args: infer A8): infer R8;
|
|
1540
|
-
(...args: infer A9): infer R9;
|
|
1541
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) | ((...p: A5) => R5) | ((...p: A6) => R6) | ((...p: A7) => R7) | ((...p: A8) => R8) | ((...p: A9) => R9) : F extends {
|
|
1542
|
-
(...args: infer A1): infer R1;
|
|
1543
|
-
(...args: infer A2): infer R2;
|
|
1544
|
-
(...args: infer A3): infer R3;
|
|
1545
|
-
(...args: infer A4): infer R4;
|
|
1546
|
-
(...args: infer A5): infer R5;
|
|
1547
|
-
(...args: infer A6): infer R6;
|
|
1548
|
-
(...args: infer A7): infer R7;
|
|
1549
|
-
(...args: infer A8): infer R8;
|
|
1550
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) | ((...p: A5) => R5) | ((...p: A6) => R6) | ((...p: A7) => R7) | ((...p: A8) => R8) : F extends {
|
|
1551
|
-
(...args: infer A1): infer R1;
|
|
1552
|
-
(...args: infer A2): infer R2;
|
|
1553
|
-
(...args: infer A3): infer R3;
|
|
1554
|
-
(...args: infer A4): infer R4;
|
|
1555
|
-
(...args: infer A5): infer R5;
|
|
1556
|
-
(...args: infer A6): infer R6;
|
|
1557
|
-
(...args: infer A7): infer R7;
|
|
1558
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) | ((...p: A5) => R5) | ((...p: A6) => R6) | ((...p: A7) => R7) : F extends {
|
|
1559
|
-
(...args: infer A1): infer R1;
|
|
1560
|
-
(...args: infer A2): infer R2;
|
|
1561
|
-
(...args: infer A3): infer R3;
|
|
1562
|
-
(...args: infer A4): infer R4;
|
|
1563
|
-
(...args: infer A5): infer R5;
|
|
1564
|
-
(...args: infer A6): infer R6;
|
|
1565
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) | ((...p: A5) => R5) | ((...p: A6) => R6) : F extends {
|
|
1566
|
-
(...args: infer A1): infer R1;
|
|
1567
|
-
(...args: infer A2): infer R2;
|
|
1568
|
-
(...args: infer A3): infer R3;
|
|
1569
|
-
(...args: infer A4): infer R4;
|
|
1570
|
-
(...args: infer A5): infer R5;
|
|
1571
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) | ((...p: A5) => R5) : F extends {
|
|
1572
|
-
(...args: infer A1): infer R1;
|
|
1573
|
-
(...args: infer A2): infer R2;
|
|
1574
|
-
(...args: infer A3): infer R3;
|
|
1575
|
-
(...args: infer A4): infer R4;
|
|
1576
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) | ((...p: A4) => R4) : F extends {
|
|
1577
|
-
(...args: infer A1): infer R1;
|
|
1578
|
-
(...args: infer A2): infer R2;
|
|
1579
|
-
(...args: infer A3): infer R3;
|
|
1580
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) | ((...p: A3) => R3) : F extends {
|
|
1581
|
-
(...args: infer A1): infer R1;
|
|
1582
|
-
(...args: infer A2): infer R2;
|
|
1583
|
-
} ? ((...p: A1) => R1) | ((...p: A2) => R2) : F extends ((...args: infer A1) => infer R1) ? ((...p: A1) => R1) : never;
|
|
1584
|
-
/**
|
|
1585
|
-
* Get a union of overload variants for a function {@linkcode FunctionType}.
|
|
1586
|
-
* Does a check for whether we can do the one-shot
|
|
1587
|
-
* 10-overload matcher (which works for ts\>5.3), and if not,
|
|
1588
|
-
* falls back to the more complicated utility.
|
|
1589
|
-
*/
|
|
1590
|
-
type OverloadsInfoUnion<FunctionType> = IsNever<TSPost53OverloadsInfoUnion<(a: 1) => 2>> extends true ? TSPre53OverloadsInfoUnion<FunctionType> : TSPost53OverloadsInfoUnion<FunctionType>;
|
|
1591
|
-
/**
|
|
1592
|
-
* Allows inferring any function using the `infer` keyword.
|
|
1593
|
-
*/
|
|
1594
|
-
|
|
1595
|
-
/**
|
|
1596
|
-
* The simple(ish) way to get overload info from a constructor
|
|
1597
|
-
* {@linkcode ConstructorType}. Recent versions of TypeScript will match any
|
|
1598
|
-
* constructor against a generic 10-overload type, filling in slots with
|
|
1599
|
-
* duplicates of the constructor. So, we can just match against a single type
|
|
1600
|
-
* and get all the overloads.
|
|
1601
|
-
*
|
|
1602
|
-
* For older versions of TypeScript,
|
|
1603
|
-
* we'll need to painstakingly do ten separate matches.
|
|
1604
|
-
*/
|
|
1605
|
-
type TSPost53ConstructorOverloadsInfoUnion<ConstructorType> = ConstructorType extends {
|
|
1606
|
-
new (...args: infer A1): infer R1;
|
|
1607
|
-
new (...args: infer A2): infer R2;
|
|
1608
|
-
new (...args: infer A3): infer R3;
|
|
1609
|
-
new (...args: infer A4): infer R4;
|
|
1610
|
-
new (...args: infer A5): infer R5;
|
|
1611
|
-
new (...args: infer A6): infer R6;
|
|
1612
|
-
new (...args: infer A7): infer R7;
|
|
1613
|
-
new (...args: infer A8): infer R8;
|
|
1614
|
-
new (...args: infer A9): infer R9;
|
|
1615
|
-
new (...args: infer A10): infer R10;
|
|
1616
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) | (new (...p: A5) => R5) | (new (...p: A6) => R6) | (new (...p: A7) => R7) | (new (...p: A8) => R8) | (new (...p: A9) => R9) | (new (...p: A10) => R10) : never;
|
|
1617
|
-
/**
|
|
1618
|
-
* A constructor function with `unknown` parameters and return type.
|
|
1619
|
-
*/
|
|
1620
|
-
type UnknownConstructor = new (...args: unknown[]) => unknown;
|
|
1621
|
-
/**
|
|
1622
|
-
* Same as {@linkcode IsUselessOverloadInfo}, but for constructors.
|
|
1623
|
-
*/
|
|
1624
|
-
type IsUselessConstructorOverloadInfo<FunctionType> = StrictEqualUsingTSInternalIdenticalToOperator<FunctionType, UnknownConstructor>;
|
|
1625
|
-
/**
|
|
1626
|
-
* For older versions of TypeScript, we need two separate workarounds to
|
|
1627
|
-
* get constructor overload info. First, we need need to use
|
|
1628
|
-
* {@linkcode DecreasingConstructorOverloadsInfoUnion} to get the overload
|
|
1629
|
-
* info for constructors with 1-10 overloads. Then, we need to filter out the
|
|
1630
|
-
* "useless" overloads that are present in older versions of TypeScript,
|
|
1631
|
-
* for parameterless constructors. To do this we use
|
|
1632
|
-
* {@linkcode IsUselessConstructorOverloadInfo} to remove useless overloads.
|
|
1633
|
-
*
|
|
1634
|
-
* @see {@link https://github.com/microsoft/TypeScript/issues/28867 | Related}
|
|
1635
|
-
*/
|
|
1636
|
-
type TSPre53ConstructorOverloadsInfoUnion<ConstructorType> = Tuplify<DecreasingConstructorOverloadsInfoUnion<ConstructorType>> extends infer Tup ? Tup extends [infer Ctor] ? IsUselessConstructorOverloadInfo<Ctor> extends true ? never : Ctor : never : never;
|
|
1637
|
-
/**
|
|
1638
|
-
* For versions of TypeScript below 5.3, we need to check for 10 overloads,
|
|
1639
|
-
* then 9, then 8, etc., to get a union of the overload variants.
|
|
1640
|
-
*/
|
|
1641
|
-
type DecreasingConstructorOverloadsInfoUnion<ConstructorType> = ConstructorType extends {
|
|
1642
|
-
new (...args: infer A1): infer R1;
|
|
1643
|
-
new (...args: infer A2): infer R2;
|
|
1644
|
-
new (...args: infer A3): infer R3;
|
|
1645
|
-
new (...args: infer A4): infer R4;
|
|
1646
|
-
new (...args: infer A5): infer R5;
|
|
1647
|
-
new (...args: infer A6): infer R6;
|
|
1648
|
-
new (...args: infer A7): infer R7;
|
|
1649
|
-
new (...args: infer A8): infer R8;
|
|
1650
|
-
new (...args: infer A9): infer R9;
|
|
1651
|
-
new (...args: infer A10): infer R10;
|
|
1652
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) | (new (...p: A5) => R5) | (new (...p: A6) => R6) | (new (...p: A7) => R7) | (new (...p: A8) => R8) | (new (...p: A9) => R9) | (new (...p: A10) => R10) : ConstructorType extends {
|
|
1653
|
-
new (...args: infer A1): infer R1;
|
|
1654
|
-
new (...args: infer A2): infer R2;
|
|
1655
|
-
new (...args: infer A3): infer R3;
|
|
1656
|
-
new (...args: infer A4): infer R4;
|
|
1657
|
-
new (...args: infer A5): infer R5;
|
|
1658
|
-
new (...args: infer A6): infer R6;
|
|
1659
|
-
new (...args: infer A7): infer R7;
|
|
1660
|
-
new (...args: infer A8): infer R8;
|
|
1661
|
-
new (...args: infer A9): infer R9;
|
|
1662
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) | (new (...p: A5) => R5) | (new (...p: A6) => R6) | (new (...p: A7) => R7) | (new (...p: A8) => R8) | (new (...p: A9) => R9) : ConstructorType extends {
|
|
1663
|
-
new (...args: infer A1): infer R1;
|
|
1664
|
-
new (...args: infer A2): infer R2;
|
|
1665
|
-
new (...args: infer A3): infer R3;
|
|
1666
|
-
new (...args: infer A4): infer R4;
|
|
1667
|
-
new (...args: infer A5): infer R5;
|
|
1668
|
-
new (...args: infer A6): infer R6;
|
|
1669
|
-
new (...args: infer A7): infer R7;
|
|
1670
|
-
new (...args: infer A8): infer R8;
|
|
1671
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) | (new (...p: A5) => R5) | (new (...p: A6) => R6) | (new (...p: A7) => R7) | (new (...p: A8) => R8) : ConstructorType extends {
|
|
1672
|
-
new (...args: infer A1): infer R1;
|
|
1673
|
-
new (...args: infer A2): infer R2;
|
|
1674
|
-
new (...args: infer A3): infer R3;
|
|
1675
|
-
new (...args: infer A4): infer R4;
|
|
1676
|
-
new (...args: infer A5): infer R5;
|
|
1677
|
-
new (...args: infer A6): infer R6;
|
|
1678
|
-
new (...args: infer A7): infer R7;
|
|
1679
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) | (new (...p: A5) => R5) | (new (...p: A6) => R6) | (new (...p: A7) => R7) : ConstructorType extends {
|
|
1680
|
-
new (...args: infer A1): infer R1;
|
|
1681
|
-
new (...args: infer A2): infer R2;
|
|
1682
|
-
new (...args: infer A3): infer R3;
|
|
1683
|
-
new (...args: infer A4): infer R4;
|
|
1684
|
-
new (...args: infer A5): infer R5;
|
|
1685
|
-
new (...args: infer A6): infer R6;
|
|
1686
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) | (new (...p: A5) => R5) | (new (...p: A6) => R6) : ConstructorType extends {
|
|
1687
|
-
new (...args: infer A1): infer R1;
|
|
1688
|
-
new (...args: infer A2): infer R2;
|
|
1689
|
-
new (...args: infer A3): infer R3;
|
|
1690
|
-
new (...args: infer A4): infer R4;
|
|
1691
|
-
new (...args: infer A5): infer R5;
|
|
1692
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) | (new (...p: A5) => R5) : ConstructorType extends {
|
|
1693
|
-
new (...args: infer A1): infer R1;
|
|
1694
|
-
new (...args: infer A2): infer R2;
|
|
1695
|
-
new (...args: infer A3): infer R3;
|
|
1696
|
-
new (...args: infer A4): infer R4;
|
|
1697
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) | (new (...p: A4) => R4) : ConstructorType extends {
|
|
1698
|
-
new (...args: infer A1): infer R1;
|
|
1699
|
-
new (...args: infer A2): infer R2;
|
|
1700
|
-
new (...args: infer A3): infer R3;
|
|
1701
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) | (new (...p: A3) => R3) : ConstructorType extends {
|
|
1702
|
-
new (...args: infer A1): infer R1;
|
|
1703
|
-
new (...args: infer A2): infer R2;
|
|
1704
|
-
} ? (new (...p: A1) => R1) | (new (...p: A2) => R2) : ConstructorType extends (new (...args: infer A1) => infer R1) ? (new (...p: A1) => R1) : never;
|
|
1705
|
-
/**
|
|
1706
|
-
* Get a union of overload variants for a constructor
|
|
1707
|
-
* {@linkcode ConstructorType}. Does a check for whether we can do the
|
|
1708
|
-
* one-shot 10-overload matcher (which works for ts\>5.3), and if not,
|
|
1709
|
-
* falls back to the more complicated utility.
|
|
1710
|
-
*/
|
|
1711
|
-
type ConstructorOverloadsUnion<ConstructorType> = IsNever<TSPost53ConstructorOverloadsInfoUnion<new (a: 1) => any>> extends true ? TSPre53ConstructorOverloadsInfoUnion<ConstructorType> : TSPost53ConstructorOverloadsInfoUnion<ConstructorType>;
|
|
1712
|
-
/**
|
|
1713
|
-
* Allows inferring any constructor using the `infer` keyword.
|
|
1714
|
-
*/
|
|
1715
|
-
type InferConstructor<ConstructorType extends new (...args: any) => any> = ConstructorType;
|
|
1716
|
-
/**
|
|
1717
|
-
* A union type of the parameters allowed for any overload
|
|
1718
|
-
* of constructor {@linkcode ConstructorType}.
|
|
1719
|
-
*/
|
|
1720
|
-
type ConstructorOverloadParameters<ConstructorType> = ConstructorOverloadsUnion<ConstructorType> extends InferConstructor<infer Ctor> ? ConstructorParameters<Ctor> : never;
|
|
1721
|
-
/**
|
|
1722
|
-
* Calculates the number of overloads for a given function type.
|
|
1723
|
-
*/
|
|
1724
|
-
type NumOverloads<FunctionType> = UnionToTuple$1<OverloadsInfoUnion<FunctionType>>['length'];
|
|
1725
|
-
//#endregion
|
|
1726
|
-
//#region ../../node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/branding.d.ts
|
|
1727
|
-
/**
|
|
1728
|
-
* Represents a deeply branded type.
|
|
1729
|
-
*
|
|
1730
|
-
* Recursively walk a type and replace it with a branded type related to the
|
|
1731
|
-
* original. This is useful for equality-checking stricter than
|
|
1732
|
-
* `A extends B ? B extends A ? true : false : false`, because it detects the
|
|
1733
|
-
* difference between a few edge-case types that vanilla TypeScript
|
|
1734
|
-
* doesn't by default:
|
|
1735
|
-
* - `any` vs `unknown`
|
|
1736
|
-
* - `{ readonly a: string }` vs `{ a: string }`
|
|
1737
|
-
* - `{ a?: string }` vs `{ a: string | undefined }`
|
|
1738
|
-
*
|
|
1739
|
-
* __Note__: not very performant for complex types - this should only be used
|
|
1740
|
-
* when you know you need it. If doing an equality check, it's almost always
|
|
1741
|
-
* better to use {@linkcode StrictEqualUsingTSInternalIdenticalToOperator}.
|
|
1742
|
-
*/
|
|
1743
|
-
type DeepBrand<T> = IsNever<T> extends true ? {
|
|
1744
|
-
type: 'never';
|
|
1745
|
-
} : IsAny<T> extends true ? {
|
|
1746
|
-
type: 'any';
|
|
1747
|
-
} : IsUnknown$1<T> extends true ? {
|
|
1748
|
-
type: 'unknown';
|
|
1749
|
-
} : T extends string | number | boolean | symbol | bigint | null | undefined | void ? {
|
|
1750
|
-
type: 'primitive';
|
|
1751
|
-
value: T;
|
|
1752
|
-
} : T extends (new (...args: any[]) => any) ? {
|
|
1753
|
-
type: 'constructor';
|
|
1754
|
-
params: ConstructorOverloadParameters<T>;
|
|
1755
|
-
instance: DeepBrand<InstanceType<Extract<T, new (...args: any) => any>>>;
|
|
1756
|
-
} : T extends ((...args: infer P) => infer R) ? NumOverloads<T> extends 1 ? {
|
|
1757
|
-
type: 'function';
|
|
1758
|
-
params: DeepBrand<P>;
|
|
1759
|
-
return: DeepBrand<R>;
|
|
1760
|
-
this: DeepBrand<ThisParameterType<T>>;
|
|
1761
|
-
props: DeepBrand<Omit<T, keyof Function>>;
|
|
1762
|
-
} : UnionToTuple$1<OverloadsInfoUnion<T>> extends infer OverloadsTuple ? {
|
|
1763
|
-
type: 'overloads';
|
|
1764
|
-
overloads: { [K in keyof OverloadsTuple]: DeepBrand<OverloadsTuple[K]> };
|
|
1765
|
-
} : never : T extends any[] ? {
|
|
1766
|
-
type: 'array';
|
|
1767
|
-
items: { [K in keyof T]: T[K] };
|
|
1768
|
-
} : {
|
|
1769
|
-
type: 'object';
|
|
1770
|
-
properties: { [K in keyof T]: DeepBrand<T[K]> };
|
|
1771
|
-
readonly: ReadonlyKeys<T>;
|
|
1772
|
-
required: RequiredKeys<T>;
|
|
1773
|
-
optional: OptionalKeys<T>;
|
|
1774
|
-
constructorParams: DeepBrand<ConstructorOverloadParameters<T>>;
|
|
1775
|
-
};
|
|
1776
|
-
/**
|
|
1777
|
-
* Checks if two types are strictly equal using branding.
|
|
1778
|
-
*/
|
|
1779
|
-
type StrictEqualUsingBranding<Left, Right> = MutuallyExtends<DeepBrand<Left>, DeepBrand<Right>>;
|
|
1780
|
-
//#endregion
|
|
1781
|
-
//#region ../../node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/messages.d.ts
|
|
1782
|
-
/**
|
|
1783
|
-
* Determines the printable type representation for a given type.
|
|
1784
|
-
*/
|
|
1785
|
-
type PrintType<T> = IsUnknown$1<T> extends true ? 'unknown' : IsNever<T> extends true ? 'never' : IsAny<T> extends true ? never : boolean extends T ? 'boolean' : T extends boolean ? `literal boolean: ${T}` : string extends T ? 'string' : T extends string ? `literal string: ${T}` : number extends T ? 'number' : T extends number ? `literal number: ${T}` : bigint extends T ? 'bigint' : T extends bigint ? `literal bigint: ${T}` : T extends null ? 'null' : T extends undefined ? 'undefined' : T extends ((...args: any[]) => any) ? 'function' : '...';
|
|
1786
|
-
/**
|
|
1787
|
-
* Helper for showing end-user a hint why their type assertion is failing.
|
|
1788
|
-
* This swaps "leaf" types with a literal message about what the actual and
|
|
1789
|
-
* expected types are. Needs to check for `Not<IsAny<Actual>>` because
|
|
1790
|
-
* otherwise `LeafTypeOf<Actual>` returns `never`, which extends everything 🤔
|
|
1791
|
-
*/
|
|
1792
|
-
type MismatchInfo<Actual, Expected> = And<[Extends<PrintType<Actual>, '...'>, Not<IsAny<Actual>>]> extends true ? And<[Extends<any[], Actual>, Extends<any[], Expected>]> extends true ? Array<MismatchInfo<Extract<Actual, any[]>[number], Extract<Expected, any[]>[number]>> : { [K in UsefulKeys<Actual> | UsefulKeys<Expected>]: MismatchInfo<K extends keyof Actual ? Actual[K] : never, K extends keyof Expected ? Expected[K] : never> } : StrictEqualUsingBranding<Actual, Expected> extends true ? Actual : `Expected: ${PrintType<Expected>}, Actual: ${PrintType<Exclude<Actual, Expected>>}`;
|
|
1793
|
-
/**
|
|
1794
|
-
* @internal
|
|
1795
|
-
*/
|
|
1796
|
-
//#endregion
|
|
1797
1393
|
//#region src/types/core/variants.types.d.ts
|
|
1798
1394
|
type NarrowVariant<TRoot extends {
|
|
1799
1395
|
[x: string]: unknown;
|
|
@@ -1816,9 +1412,9 @@ type RequiredForm<T extends Record<string, any>, TKey extends keyof T> = Omit<Re
|
|
|
1816
1412
|
type VariantTuple<T extends Record<string, any>, TKey extends keyof T> = [RequiredForm<T, TKey>, ...RequiredForm<T, TKey>[]];
|
|
1817
1413
|
//#endregion
|
|
1818
1414
|
//#region src/core/useRegle/useRegle.d.ts
|
|
1819
|
-
type useRegleFnOptions<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends ReglePartialRuleTree<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<AllRulesDeclarations
|
|
1415
|
+
type useRegleFnOptions<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends DeepExact<TRules, ReglePartialRuleTree<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<AllRulesDeclarations>>>, TAdditionalOptions extends Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>> = TState extends MaybeInput<PrimitiveTypes> ? Partial<DeepMaybeRef<RegleBehaviourOptions>> & TAdditionalOptions : Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<JoinDiscriminatedUnions<TState extends Record<string, any> ? Unwrap<TState> : {}>, TState extends Record<string, any> ? (TRules extends Record<string, any> ? TRules : {}) : {}, TValidationGroups> & TAdditionalOptions;
|
|
1820
1416
|
interface useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
|
|
1821
|
-
<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends ReglePartialRuleTree<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<AllRulesDeclarations> & TCustomRules
|
|
1417
|
+
<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends DeepExact<TRules, ReglePartialRuleTree<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<AllRulesDeclarations> & TCustomRules>>, TDecl extends RegleRuleDecl<NonNullable<TState>, Partial<AllRulesDeclarations> & TCustomRules>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>>(...params: [state: Maybe<MaybeRef<TState> | DeepReactiveState<TState>>, rulesFactory: TState extends MaybeInput<PrimitiveTypes> ? MaybeRefOrGetter<TDecl> : TState extends Record<string, any> ? MaybeRef<TRules> | ((...args: any[]) => TRules) : {}, ...(HaveAnyRequiredProps<useRegleFnOptions<TState, TRules, TAdditionalOptions, TValidationGroups>> extends true ? [options: useRegleFnOptions<TState, TRules, TAdditionalOptions, TValidationGroups>] : [options?: useRegleFnOptions<TState, TRules, TAdditionalOptions, TValidationGroups>])]): NonNullable<TState> extends PrimitiveTypes ? RegleSingleField<NonNullable<TState>, TDecl, TShortcuts, TAdditionalReturnProperties> : Regle<TState extends Record<string, any> ? Unwrap<TState> : {}, TRules extends Record<string, any> ? TRules : {}, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
|
|
1822
1418
|
__config?: {
|
|
1823
1419
|
rules?: () => CustomRulesDeclarationTree;
|
|
1824
1420
|
modifiers?: RegleBehaviourOptions;
|
|
@@ -1848,7 +1444,7 @@ declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutD
|
|
|
1848
1444
|
//#endregion
|
|
1849
1445
|
//#region src/core/useRegle/inferRules.d.ts
|
|
1850
1446
|
interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
1851
|
-
<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends ReglePartialRuleTree<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<AllRulesDeclarations> & TCustomRules
|
|
1447
|
+
<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends DeepExact<TRules, ReglePartialRuleTree<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<AllRulesDeclarations> & TCustomRules>>, TDecl extends RegleRuleDecl<NonNullable<TState>, Partial<AllRulesDeclarations> & TCustomRules>>(state: MaybeRef<TState> | DeepReactiveState<TState>, rulesFactory: TState extends MaybeInput<PrimitiveTypes> ? TDecl : TState extends Record<string, any> ? TRules : {}): NonNullable<TState> extends PrimitiveTypes ? TDecl : TRules;
|
|
1852
1448
|
}
|
|
1853
1449
|
/**
|
|
1854
1450
|
* Rule type helper to provide autocomplete and typecheck to your form rules or part of your form rules
|
|
@@ -1862,6 +1458,7 @@ declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
|
1862
1458
|
//#region src/core/useRegle/root/useRootStorage.d.ts
|
|
1863
1459
|
declare function useRootStorage({
|
|
1864
1460
|
initialState,
|
|
1461
|
+
originalState,
|
|
1865
1462
|
options,
|
|
1866
1463
|
scopeRules,
|
|
1867
1464
|
state,
|
|
@@ -1875,6 +1472,7 @@ declare function useRootStorage({
|
|
|
1875
1472
|
state: Ref<Record<string, any> | PrimitiveTypes>;
|
|
1876
1473
|
options: ResolvedRegleBehaviourOptions;
|
|
1877
1474
|
initialState: Ref<Record<string, any> | PrimitiveTypes>;
|
|
1475
|
+
originalState: Record<string, any> | PrimitiveTypes;
|
|
1878
1476
|
customRules?: () => CustomRulesDeclarationTree;
|
|
1879
1477
|
shortcuts: RegleShortcutDefinition | undefined;
|
|
1880
1478
|
schemaErrors?: Ref<any | undefined>;
|
|
@@ -1927,6 +1525,21 @@ type RegleEnforceCustomRequiredRules<T extends useRegleFn<any, any>, TRules exte
|
|
|
1927
1525
|
*/
|
|
1928
1526
|
type RegleCustomFieldStatus<T extends useRegleFn<any, any>, TState extends unknown = any, TRules extends keyof InferRegleRules<T> = never> = RegleFieldStatus<TState, [TRules] extends [never] ? Partial<InferRegleRules<T>> : RegleEnforceCustomRequiredRules<T, TRules>, InferRegleShortcuts<T>>;
|
|
1929
1527
|
//#endregion
|
|
1528
|
+
//#region src/types/utils/mismatch.types.d.ts
|
|
1529
|
+
/**
|
|
1530
|
+
/**
|
|
1531
|
+
* DeepExact<T, S> is a TypeScript utility type that recursively checks whether the structure of type S
|
|
1532
|
+
* exactly matches the structure of type T, including all nested properties.
|
|
1533
|
+
*
|
|
1534
|
+
* Used in `useRegle` and `inferRules` to enforce that the rules object matches the expected shape exactly.
|
|
1535
|
+
*/
|
|
1536
|
+
type DeepExact<TInfer, TTree> = NonNullable<TTree> extends MaybeRef<RegleRuleDecl> ? TTree : NonNullable<TTree> extends MaybeRef<RegleCollectionRuleDecl> ? TTree : [keyof TInfer] extends [keyof ExtractFromGetter<TTree>] ? ExactObject<TInfer, TTree> : { [K in keyof TInfer as K extends keyof TTree ? never : K]: TypeError<`Unknown property: <${Coerce<K>}>`> };
|
|
1537
|
+
type ExactObject<TInfer, TTree> = { [K in keyof TTree]: NonNullable<TTree[K]> extends Record<string, any> ? ExtendOnlyRealRecord<TTree[K]> extends true ? NonNullable<TTree[K]> extends MaybeRef<RegleRuleDecl> ? TTree[K] : K extends keyof TInfer ? DeepExact<TInfer[K], NonNullable<TTree[K]>> : TTree[K] : TTree[K] : TTree[K] };
|
|
1538
|
+
type TypeError<Msg> = {
|
|
1539
|
+
[' TypeError']: Msg;
|
|
1540
|
+
};
|
|
1541
|
+
type Coerce<T> = `${T & string}`;
|
|
1542
|
+
//#endregion
|
|
1930
1543
|
//#region src/types/utils/object.types.d.ts
|
|
1931
1544
|
type RemoveCommonKey<T extends readonly any[], K extends PropertyKey> = T extends [infer F, ...infer R] ? [Prettify<Omit<F, K>>, ...RemoveCommonKey<R, K>] : [];
|
|
1932
1545
|
/**
|
|
@@ -1969,10 +1582,6 @@ type TupleToPlainObj<T> = { [I in keyof T & `${number}`]: T[I] };
|
|
|
1969
1582
|
type HasNamedKeys<T> = IsUnion<T> extends true ? ProcessHasNamedKeys<LazyJoinDiscriminatedUnions<T>> : ProcessHasNamedKeys<T>;
|
|
1970
1583
|
type ProcessHasNamedKeys<T> = { [K in keyof NonNullable<T>]: K extends string ? (string extends K ? never : K) : never }[keyof NonNullable<T>] extends never ? false : true;
|
|
1971
1584
|
//#endregion
|
|
1972
|
-
//#region src/types/utils/mismatch.types.d.ts
|
|
1973
|
-
type isDeepExact<TRules, TTree> = { [K in keyof TRules]-?: CheckDeepExact<NonNullable<TRules[K]>, K extends keyof JoinDiscriminatedUnions<TTree> ? NonNullable<JoinDiscriminatedUnions<TTree>[K]> : never> }[keyof TRules] extends true ? true : false;
|
|
1974
|
-
type CheckDeepExact<TRules, TTree> = [TTree] extends [never] ? false : TRules extends RegleCollectionRuleDecl ? TTree extends Array<any> ? isDeepExact<NonNullable<TRules['$each']>, JoinDiscriminatedUnions<NonNullable<ArrayElement<TTree>>>> : TRules extends MaybeRef<RegleRuleDecl> ? true : TRules extends ReglePartialRuleTree<any> ? isDeepExact<UnwrapRef<TRules>, TTree> : false : TRules extends MaybeRef<RegleRuleDecl> ? true : TRules extends ReglePartialRuleTree<any> ? isDeepExact<UnwrapRef<TRules>, TTree> : false;
|
|
1975
|
-
//#endregion
|
|
1976
1585
|
//#region src/types/utils/infer.types.d.ts
|
|
1977
1586
|
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> }>;
|
|
1978
1587
|
type ProcessInputChildren<TRule extends unknown, TMarkMaybe extends boolean> = TRule extends {
|
|
@@ -2468,10 +2077,17 @@ interface RegleCommonStatus<TValue = any> {
|
|
|
2468
2077
|
/** A reference to the original validated model. It can be used to bind your form with v-model.*/
|
|
2469
2078
|
$value: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
|
|
2470
2079
|
/**
|
|
2471
|
-
*
|
|
2080
|
+
* This value reflect the current initial value of the field.
|
|
2081
|
+
* The initial value is different than the original value as the initial value can be mutated when using `$reset`.
|
|
2472
2082
|
*/
|
|
2473
2083
|
readonly $initialValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
|
|
2474
|
-
/**
|
|
2084
|
+
/**
|
|
2085
|
+
* This value reflect the original value of the field at original call. This can't be mutated
|
|
2086
|
+
*/
|
|
2087
|
+
readonly $originalValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
|
|
2088
|
+
/**
|
|
2089
|
+
* `$value` variant that will not "touch" the field and update the value silently, running only the rules, so you can easily swap values without impacting user interaction.
|
|
2090
|
+
* */
|
|
2475
2091
|
$silentValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
|
|
2476
2092
|
/** Marks the field and all nested properties as $dirty. */
|
|
2477
2093
|
$touch(): void;
|
package/dist/regle-core.js
CHANGED
|
@@ -112,17 +112,33 @@ function dotPathObjectToNested(obj) {
|
|
|
112
112
|
else {
|
|
113
113
|
if (typeof current[arrayIndex] !== "object" || current[arrayIndex] === null) {
|
|
114
114
|
const nextPart = path[i + 1];
|
|
115
|
-
current[arrayIndex] = nextPart && nextPart.match(/^\d+$/) ? {
|
|
115
|
+
current[arrayIndex] = nextPart && nextPart.match(/^\d+$/) ? {
|
|
116
|
+
$each: [],
|
|
117
|
+
$self: []
|
|
118
|
+
} : {};
|
|
116
119
|
}
|
|
117
120
|
current = "$each" in current[arrayIndex] ? current[arrayIndex].$each : current[arrayIndex];
|
|
118
121
|
}
|
|
119
|
-
} else if (isLast) current[part]
|
|
122
|
+
} else if (isLast) if (Array.isArray(current[part])) {
|
|
123
|
+
let previous = current[part].slice();
|
|
124
|
+
current[part] = {};
|
|
125
|
+
current[part].$self = previous;
|
|
126
|
+
} else if (typeof current[part] === "object" && current[part] !== null && "$each" in current[part]) current[part].$self = value;
|
|
127
|
+
else current[part] = value;
|
|
120
128
|
else {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
current[part]
|
|
129
|
+
const nextPart = path[i + 1];
|
|
130
|
+
if (Array.isArray(current[part])) {
|
|
131
|
+
let previous = current[part].slice();
|
|
132
|
+
current[part] = { $each: [] };
|
|
133
|
+
current[part].$self = previous;
|
|
124
134
|
}
|
|
125
|
-
current
|
|
135
|
+
if (typeof current[part] !== "object" || current[part] === null || Array.isArray(current[part]) && !nextPart.match(/^\d+$/)) if (nextPart && nextPart.match(/^\d+$/)) current[part] = {
|
|
136
|
+
$each: [],
|
|
137
|
+
$self: []
|
|
138
|
+
};
|
|
139
|
+
else current[part] = {};
|
|
140
|
+
if ("$each" in current[part]) current = current[part].$each;
|
|
141
|
+
else current = current[part];
|
|
126
142
|
}
|
|
127
143
|
}
|
|
128
144
|
}
|
|
@@ -911,7 +927,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
911
927
|
|
|
912
928
|
//#endregion
|
|
913
929
|
//#region src/core/useRegle/root/createReactiveFieldStatus.ts
|
|
914
|
-
function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cachePath, fieldName, storage, options, externalErrors, schemaErrors, schemaMode, onUnwatch, $isArray, initialState, shortcuts, onValidate }) {
|
|
930
|
+
function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cachePath, fieldName, storage, options, externalErrors, schemaErrors, schemaMode, onUnwatch, $isArray, initialState, originalState, shortcuts, onValidate }) {
|
|
915
931
|
let scope = effectScope();
|
|
916
932
|
let scopeState;
|
|
917
933
|
let fieldScopes = [];
|
|
@@ -1216,7 +1232,10 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1216
1232
|
$clearExternalErrors();
|
|
1217
1233
|
scopeState.$dirty.value = false;
|
|
1218
1234
|
storage.setDirtyEntry(cachePath, false);
|
|
1219
|
-
if (!fromParent) if (options$1?.
|
|
1235
|
+
if (!fromParent) if (options$1?.toOriginalState) {
|
|
1236
|
+
state.value = cloneDeep(originalState);
|
|
1237
|
+
initialState.value = cloneDeep(originalState);
|
|
1238
|
+
} else if (options$1?.toInitialState) state.value = cloneDeep(initialState.value);
|
|
1220
1239
|
else if (options$1?.toState) {
|
|
1221
1240
|
let newInitialState;
|
|
1222
1241
|
if (typeof options$1?.toState === "function") newInitialState = options$1?.toState();
|
|
@@ -1285,6 +1304,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1285
1304
|
$externalErrors: externalErrors,
|
|
1286
1305
|
$value: state,
|
|
1287
1306
|
$initialValue: initialState,
|
|
1307
|
+
$originalValue: originalState,
|
|
1288
1308
|
$rules,
|
|
1289
1309
|
...$shortcuts,
|
|
1290
1310
|
$path: path,
|
|
@@ -1301,7 +1321,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1301
1321
|
|
|
1302
1322
|
//#endregion
|
|
1303
1323
|
//#region src/core/useRegle/root/collections/createReactiveCollectionElement.ts
|
|
1304
|
-
function createCollectionElement({ $id, path, cachePath, index, options, storage, stateValue, customMessages, rules, externalErrors, schemaErrors, initialState, shortcuts, fieldName, schemaMode }) {
|
|
1324
|
+
function createCollectionElement({ $id, path, cachePath, index, options, storage, stateValue, customMessages, rules, externalErrors, schemaErrors, initialState, originalState, shortcuts, fieldName, schemaMode }) {
|
|
1305
1325
|
const $fieldId = stateValue.value?.$id ?? rules.$key ?? randomId();
|
|
1306
1326
|
let $cachePath = `${cachePath}.${String($fieldId)}`;
|
|
1307
1327
|
let $path = `${path}.${index}`;
|
|
@@ -1327,6 +1347,7 @@ function createCollectionElement({ $id, path, cachePath, index, options, storage
|
|
|
1327
1347
|
externalErrors: $externalErrors,
|
|
1328
1348
|
schemaErrors: $schemaErrors,
|
|
1329
1349
|
initialState,
|
|
1350
|
+
originalState,
|
|
1330
1351
|
shortcuts,
|
|
1331
1352
|
fieldName,
|
|
1332
1353
|
schemaMode
|
|
@@ -1341,7 +1362,7 @@ function createCollectionElement({ $id, path, cachePath, index, options, storage
|
|
|
1341
1362
|
|
|
1342
1363
|
//#endregion
|
|
1343
1364
|
//#region src/core/useRegle/root/collections/createReactiveCollectionRoot.ts
|
|
1344
|
-
function createReactiveCollectionStatus({ state, rulesDef, customMessages, path, storage, options, externalErrors, schemaErrors, schemaMode, initialState, shortcuts, fieldName }) {
|
|
1365
|
+
function createReactiveCollectionStatus({ state, rulesDef, customMessages, path, storage, options, externalErrors, schemaErrors, schemaMode, initialState, originalState, shortcuts, fieldName }) {
|
|
1345
1366
|
let scope = effectScope();
|
|
1346
1367
|
let scopeState;
|
|
1347
1368
|
let immediateScope = effectScope();
|
|
@@ -1399,6 +1420,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1399
1420
|
externalErrors: $externalErrors,
|
|
1400
1421
|
schemaErrors: $schemaErrors,
|
|
1401
1422
|
initialState: initialStateRef,
|
|
1423
|
+
originalState,
|
|
1402
1424
|
shortcuts,
|
|
1403
1425
|
fieldName,
|
|
1404
1426
|
schemaMode
|
|
@@ -1419,6 +1441,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1419
1441
|
schemaErrors: computed(() => schemaErrors?.value?.$self),
|
|
1420
1442
|
$isArray: true,
|
|
1421
1443
|
initialState,
|
|
1444
|
+
originalState,
|
|
1422
1445
|
shortcuts,
|
|
1423
1446
|
fieldName,
|
|
1424
1447
|
schemaMode
|
|
@@ -1454,6 +1477,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1454
1477
|
externalErrors: $externalErrors,
|
|
1455
1478
|
schemaErrors: $schemaErrors,
|
|
1456
1479
|
initialState: toRef(initialState.value ?? [], index),
|
|
1480
|
+
originalState,
|
|
1457
1481
|
shortcuts,
|
|
1458
1482
|
fieldName,
|
|
1459
1483
|
schemaMode
|
|
@@ -1592,6 +1616,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1592
1616
|
$errors,
|
|
1593
1617
|
$silentErrors,
|
|
1594
1618
|
$initialValue: initialState,
|
|
1619
|
+
$originalValue: originalState,
|
|
1595
1620
|
$ready,
|
|
1596
1621
|
$anyDirty,
|
|
1597
1622
|
$name,
|
|
@@ -1654,7 +1679,10 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1654
1679
|
}
|
|
1655
1680
|
function $reset(options$1, fromParent) {
|
|
1656
1681
|
$unwatch();
|
|
1657
|
-
if (!fromParent) if (options$1?.
|
|
1682
|
+
if (!fromParent) if (options$1?.toOriginalState) {
|
|
1683
|
+
state.value = cloneDeep(originalState);
|
|
1684
|
+
initialState.value = cloneDeep(originalState);
|
|
1685
|
+
} else if (options$1?.toInitialState) state.value = cloneDeep(initialState.value);
|
|
1658
1686
|
else if (options$1?.toState) {
|
|
1659
1687
|
let newInitialState;
|
|
1660
1688
|
if (typeof options$1?.toState === "function") newInitialState = options$1?.toState();
|
|
@@ -1716,6 +1744,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1716
1744
|
$each: $eachStatus,
|
|
1717
1745
|
$value: state,
|
|
1718
1746
|
$initialValue: initialState,
|
|
1747
|
+
$originalValue: originalState,
|
|
1719
1748
|
$validate,
|
|
1720
1749
|
$unwatch,
|
|
1721
1750
|
$watch,
|
|
@@ -1728,7 +1757,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1728
1757
|
|
|
1729
1758
|
//#endregion
|
|
1730
1759
|
//#region src/core/useRegle/root/createReactiveNestedStatus.ts
|
|
1731
|
-
function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, rootRules, externalErrors, schemaErrors, rootSchemaErrors, validationGroups, initialState, fieldName,...commonArgs }) {
|
|
1760
|
+
function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, rootRules, externalErrors, schemaErrors, rootSchemaErrors, validationGroups, initialState, originalState, fieldName,...commonArgs }) {
|
|
1732
1761
|
let scope = effectScope();
|
|
1733
1762
|
let scopeState;
|
|
1734
1763
|
let nestedScopes = [];
|
|
@@ -1754,6 +1783,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
1754
1783
|
externalErrors: $externalErrors,
|
|
1755
1784
|
schemaErrors: $schemaErrors,
|
|
1756
1785
|
initialState: initialStateRef,
|
|
1786
|
+
originalState,
|
|
1757
1787
|
fieldName: statePropKey,
|
|
1758
1788
|
...commonArgs
|
|
1759
1789
|
})]);
|
|
@@ -1774,6 +1804,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
1774
1804
|
externalErrors: $externalErrors,
|
|
1775
1805
|
schemaErrors: $schemaErrors,
|
|
1776
1806
|
initialState: initialStateRef,
|
|
1807
|
+
originalState,
|
|
1777
1808
|
fieldName: key,
|
|
1778
1809
|
...commonArgs
|
|
1779
1810
|
})];
|
|
@@ -1794,6 +1825,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
1794
1825
|
externalErrors: $externalErrors,
|
|
1795
1826
|
schemaErrors: $schemaErrors,
|
|
1796
1827
|
initialState: initialStateRef,
|
|
1828
|
+
originalState,
|
|
1797
1829
|
fieldName: key,
|
|
1798
1830
|
...commonArgs
|
|
1799
1831
|
})];
|
|
@@ -1811,6 +1843,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
1811
1843
|
externalErrors: $externalErrors,
|
|
1812
1844
|
schemaErrors: $schemaErrors,
|
|
1813
1845
|
initialState: initialStateRef,
|
|
1846
|
+
originalState,
|
|
1814
1847
|
fieldName: key,
|
|
1815
1848
|
...commonArgs
|
|
1816
1849
|
})];
|
|
@@ -1980,6 +2013,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
1980
2013
|
$value: state,
|
|
1981
2014
|
$silentValue,
|
|
1982
2015
|
$error,
|
|
2016
|
+
$originalValue: originalState,
|
|
1983
2017
|
$pending,
|
|
1984
2018
|
$invalid,
|
|
1985
2019
|
$correct,
|
|
@@ -2062,7 +2096,10 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2062
2096
|
function $reset(options, fromParent) {
|
|
2063
2097
|
$unwatchExternalErrors?.();
|
|
2064
2098
|
$unwatch();
|
|
2065
|
-
if (!fromParent) if (options?.
|
|
2099
|
+
if (!fromParent) if (options?.toOriginalState) {
|
|
2100
|
+
state.value = cloneDeep({ ...originalState });
|
|
2101
|
+
initialState.value = cloneDeep({ ...originalState });
|
|
2102
|
+
} else if (options?.toInitialState) state.value = cloneDeep({ ...initialState.value ?? {} });
|
|
2066
2103
|
else if (options?.toState) {
|
|
2067
2104
|
let newInitialState;
|
|
2068
2105
|
if (typeof options?.toState === "function") newInitialState = options?.toState();
|
|
@@ -2126,6 +2163,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2126
2163
|
...$shortcuts,
|
|
2127
2164
|
$path: path,
|
|
2128
2165
|
$initialValue: initialState,
|
|
2166
|
+
$originalValue: originalState,
|
|
2129
2167
|
$fields,
|
|
2130
2168
|
$reset,
|
|
2131
2169
|
$touch,
|
|
@@ -2181,7 +2219,7 @@ function createReactiveChildrenStatus({ rulesDef,...properties }) {
|
|
|
2181
2219
|
|
|
2182
2220
|
//#endregion
|
|
2183
2221
|
//#region src/core/useRegle/root/useRootStorage.ts
|
|
2184
|
-
function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode = false, onValidate }) {
|
|
2222
|
+
function useRootStorage({ initialState, originalState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode = false, onValidate }) {
|
|
2185
2223
|
const storage = useStorage();
|
|
2186
2224
|
const regle = ref();
|
|
2187
2225
|
const computedExternalErrors = ref();
|
|
@@ -2216,6 +2254,7 @@ function useRootStorage({ initialState, options, scopeRules, state, customRules,
|
|
|
2216
2254
|
externalErrors: computedExternalErrors,
|
|
2217
2255
|
validationGroups: options.validationGroups,
|
|
2218
2256
|
initialState,
|
|
2257
|
+
originalState,
|
|
2219
2258
|
shortcuts,
|
|
2220
2259
|
fieldName: "root",
|
|
2221
2260
|
path: "",
|
|
@@ -2233,6 +2272,7 @@ function useRootStorage({ initialState, options, scopeRules, state, customRules,
|
|
|
2233
2272
|
options,
|
|
2234
2273
|
externalErrors: computedExternalErrors,
|
|
2235
2274
|
initialState,
|
|
2275
|
+
originalState,
|
|
2236
2276
|
shortcuts,
|
|
2237
2277
|
fieldName: "root",
|
|
2238
2278
|
path: "",
|
|
@@ -2270,11 +2310,13 @@ function createUseRegleComposable(customRules, options, shortcuts) {
|
|
|
2270
2310
|
triggerRef(watchableRulesGetters);
|
|
2271
2311
|
});
|
|
2272
2312
|
const initialState = ref(isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value));
|
|
2313
|
+
const originalState = isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value);
|
|
2273
2314
|
const regle = useRootStorage({
|
|
2274
2315
|
scopeRules: watchableRulesGetters,
|
|
2275
2316
|
state: processedState,
|
|
2276
2317
|
options: resolvedOptions,
|
|
2277
2318
|
initialState,
|
|
2319
|
+
originalState,
|
|
2278
2320
|
customRules,
|
|
2279
2321
|
shortcuts
|
|
2280
2322
|
});
|
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:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)a[t]=r;else{if(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!i[e+1].match(/^\d+$/)){let n=i[e+1];a[t]=n&&n.match(/^\d+$/)?{$each:[]}:{}}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];return!(w(e)&&w(t)&&s&&(r||!r&&n)&&!k(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const A={Inline:`__inline`,Async:`__async`};function j(e,t){return e.some(e=>e[t])}function M(e,t){return 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(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function I(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===A.Async||n.constructor.name===`AsyncFunction`,s={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)}},c=a({...s,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});return c}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;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=N(i._params),n=N(r._params);return e?.[t]===n?.[t]}}):!0}):!1}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function 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(){if(typeof window>`u`)return W();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.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)),n=!0),r))}function J(e,t){return z(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>X(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 ee(e){return!!e.value&&(w(e.value)||z(e.value))}function X(e){return w(e)&&`_validator`in e}function Z(e){return typeof e.value==`function`?`_validator`in e.value:!0}function te(e){return w(e)&&`$fields`in e}function ne(e){return!!e&&`$rules`in e}function re({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;let a={$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}};return a}),r=n.filter(e=>!!e),i=r.reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),a=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],o=e.$error?e.$schemaErrors??[]:[];return[...i,...a,...o]}function ie({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 ae(e){return w(e)&&`$each`in e}function oe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ae(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>se(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>se(t,n,[e])).flat()}function se(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(ae(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>se(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>se(n,t,r?.concat(e))).flat()}function ce({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,$debounce:d,modifiers:f}){let p=t(),m={},h,g=e(()=>X(r.value)&&r.value._async),v=u(!1),{$pending:y,$valid:x,$metadata:S,$validating:C}=c.trySetRuleStatusRef(`${s}.${i}`);function w(){p=t(),m=p.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:x.value,$invalid:!x.value,$pending:y.value},$params:C.value,...S.value})),p=e(()=>Z(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Z(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Z(r)&&r.value.type?r.value.type:i),v=e(()=>Z(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:v,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),h=_(m?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&m.$fieldError.value)&&D()})}w();function T(){x.value=!0,m.$fieldDirty.value&&(y.value=!0)}async function E(){let e=!1;try{let t=m.$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,...m.$params.value),r=a.value;T();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,S.value=n}}catch{e=!1}finally{y.value=!1}return e}async function D(){try{C.value=!0;let e=!1;if(v.value=!0,X(r.value)&&r.value._async)e=await E();else{let t=m.$validator.value,n=t(a.value,...m.$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,S.value=r}}return x.value=e,e}catch{return!1}finally{C.value=!1,v.value=!1}}function O(){x.value=!0,S.value={},y.value=!1,C.value=!1,w()}function k(){h(),p.stop(),p=t()}return l({...m,$pending:y,$valid:x,$metadata:S,$haveAsync:g,$maybePending:v,$validating:C,$parse:D,$unwatch:k,$watch:w,$reset:O})}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,shortcuts:T,onValidate:E}){let A=t(),j,M=[],N,P,F,I,L=()=>{},R=u(!1);function z(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);q.value=s,H();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,ce({modifiers:{$silent:j.$silent,$rewardEarly:j.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:q.value.$debounce})])}K.value=Object.fromEntries(u),j.processShortcuts(),B(),t?.valid!=null&&(j.$dirty.value=c.getDirtyState(o),(j.$dirty.value&&!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L()),c.addRuleDeclEntry(o,e)}function B(){L=j.$debounce.value||j.$haveAnyAsyncRule.value?O(G,j.$debounce.value??(j.$haveAnyAsyncRule?200:0),{trackDebounceRef:R}):G}function V(){if(K.value)for(let e of Object.values(K.value))e.$unwatch();P(),I?.(),j.$dirty.value&&c.setDirtyEntry(o,j.$dirty.value),N?.(),A.stop(),A=t();for(let e of M)e.stop();M=[],y?.(),F?.()}function H(){if(K.value)for(let e of Object.values(K.value))e.$watch();j=A.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>q.value.$debounce),f=e(()=>q.value.$deepCompare==null?!1:q.value.$deepCompare),_=e(()=>q.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):q.value.$lazy),y=e(()=>q.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):q.value.$rewardEarly),x=e(()=>q.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):q.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:q.value.$silent==null?h(d.silent)==null?!1:h(d.silent):q.value.$silent),w=e(()=>q.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):q.value.$autoDirty),E=e(()=>{for(let e of Object.values(K.value))if(e.$validating)return!0;return!1}),O=e({get:()=>n.value,set(e){N(),n.value=e,W()}}),A=e(()=>R.value?U.value&&i.value:U.value&&!H.value&&i.value),j=e(()=>re({field:{$rules:K.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),P=e(()=>re({field:{$rules:K.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),F=e(()=>j.value.map(e=>e.$message)),I=e(()=>P.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,q.value.$deepCompare):S.value!==n.value:!1),z=e(()=>L.value),B=e(()=>ie({field:{$rules:K.value}})),V=e(()=>(C.value||o.value)&&!(U.value||H.value)),H=e(()=>a.value||!y.value?Object.entries(K.value).some(([e,t])=>t.$pending):!1),U=e(()=>p?.value?.length||m?.value?.length?!0:J.value?!1:Object.values(K.value).some(e=>!e.$valid||e.$maybePending)),G=e(()=>s),J=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Y=e(()=>{if(p?.value?.length||J.value||R.value)return!1;if(i.value&&!b(n.value)&&!E.value&&!H.value){if(g)return!m?.value?.length;{let e=Object.values(K.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),ee=e(()=>Object.values(K.value).some(e=>e.$haveAsync));function X(){T?.fields&&Object.entries(T.fields).forEach(([e,r])=>{let a=t();Z[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:O,$rules:K,$error:A,$pending:H,$invalid:U,$correct:Y,$errors:F,$ready:V,$silentErrors:I,$anyDirty:o,$tooltips:B,$name:G,$inactive:J,$edited:L,$anyEdited:z}))}),e}),M.push(a)})}let Z={};return{$error:A,$pending:H,$invalid:U,$correct:Y,$debounce:c,$deepCompare:f,$lazy:_,$ready:V,$issues:j,$silentIssues:P,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:z,$name:G,$haveAnyAsyncRule:ee,$shortcuts:Z,$validating:E,$tooltips:B,$dirty:i,processShortcuts:X,$silentValue:O,$inactive:J}}),W(),P=_(j.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(K.value).forEach(t=>{t.$fieldDirty=e})}),I=_([j.$error,j.$correct,j.$invalid,j.$pending],()=>{Object.values(K.value).forEach(e=>{e.$fieldError=j.$error.value,e.$fieldInvalid=j.$invalid.value,e.$fieldPending=j.$pending.value,e.$fieldCorrect=j.$correct.value})}),F=_(j.$haveAnyAsyncRule,B)}function W(){N=_(n,()=>{j.$autoDirty.value&&!j.$silent.value&&(j.$dirty.value||(j.$dirty.value=!0)),r.value instanceof Function&&z(),(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L(),j.$clearExternalErrorsOnChange.value&&Z()},{deep:x?!0:U?1:!0})}function G(){Object.values(K.value).forEach(e=>{e.$parse()})}let K=u({}),q=u({});z();function J(e,t){if(Z(),j.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)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&&Z(),!t)for(let e of Object.values(K.value))e.$reset();if(!j.$lazy.value&&!j.$silent.value&&!t)for(let e of Object.values(K.value))e.$parse()}function Y(e=!0,t=!1){j.$dirty.value||(j.$dirty.value=!0),t&&e?(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L():e&&L()}async function ee(){try{if(g)return E?(Y(!1),E()):{valid:!1,data:n.value};let e=n.value;if(!j.$dirty.value)j.$dirty.value=!0;else if(!j.$silent.value&&j.$dirty.value&&!j.$pending.value)return{valid:!j.$error.value,data:e};if(g)return{valid:!m?.value?.length,data:e};if(b(K.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.values(K.value).map(e=>e.$parse())),r=t.every(e=>e.status===`fulfilled`&&e.value===!0);return{valid:r,data:e}}catch{return{valid:!1,data:n.value}}}function X(e=!0){return j.$dirty.value?n.value:e?{_null:!0}:null}function Z(){p?.value?.length&&(p.value=[])}!j.$lazy.value&&!j.$dirty.value&&!j.$silent.value&&L();let{$shortcuts:te,$validating:ne,$autoDirty:ae,$rewardEarly:oe,$clearExternalErrorsOnChange:se,$haveAnyAsyncRule:le,$debounce:ue,$lazy:de,...Q}=j;return l({...Q,$externalErrors:p,$value:n,$initialValue:S,$rules:K,...te,$path:a,$isDebouncing:R,$reset:J,$touch:Y,$validate:ee,$unwatch:V,$watch:H,$extractDirtyFields:X,$clearExternalErrors: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,shortcuts:m,fieldName:h,schemaMode:g}){let _=s.value?.$id??l.$key??G(),v=`${r}.${String(_)}`,y=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:_,enumerable:!1,configurable:!1,writable:!1}}));let b=f(u?.value??[],i),x=e(()=>d?.value?.[i]),S=$({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:y,cachePath:v,storage:o,options:a,externalErrors:b,schemaErrors:x,initialState:p,shortcuts:m,fieldName:h,schemaMode:g});if(S){let e=s.value?.$id;S.$id=e??String(_),o.addArrayStatus(t,S.$id,S)}return S}function de({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,shortcuts:g,fieldName:y}){let x=t(),S,w=t(),T,E=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let D=u(),O=u(n.value),k=u({}),A,j,M=u({}),N=o.getCollectionsEntry(a);T=w.run(()=>{let t=e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>X(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),P(),R();function P(){k.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(D.value=G(),Object.defineProperties(n.value,{$id:{value:D.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(D.value=n.value.$id)),O.value=M.value.$value,Array.isArray(n.value)&&!T.isPrimitiveArray.value?N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=B(r.value.$each,f(()=>t),n);l&&E.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each),b=ue({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,shortcuts:g,fieldName:y,schemaMode:p});return b||null}).filter(e=>!!e):N.value=[],M.value=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,shortcuts:g,fieldName:y,schemaMode:p})}function F(){if(Array.isArray(n.value)&&!T.isPrimitiveArray.value){let t=C(N.value);N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&N.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(D.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=B(r.value.$each,l,n);t&&E.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]),v=ue({$id:D.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),shortcuts:g,fieldName:y,schemaMode:p});return v||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(D.value,t.toString())})}else N.value=[]}function I(){A=_(n,()=>{j?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!D.value?P():F(),L()},{deep:U?1:!0,flush:`pre`}),L()}function L(){j=_(n,()=>{S.$autoDirty.value&&!S.$silent.value&&M.value.$touch(!1,!0)},{flush:`post`})}function R(){I(),x=t(),S=x.run(()=>{let r=e({get:()=>n.value,set(e){A?.(),j?.(),n.value=e,I()}}),i=e(()=>M.value.$dirty&&(!N.value.length||N.value.every(e=>e.$dirty))),o=e(()=>M.value.$anyDirty||N.value.some(e=>e.$anyDirty)),c=e(()=>M.value.$invalid||N.value.some(e=>e.$invalid)),d=e(()=>(b(M.value.$rules)?!0:M.value.$correct)&&(!N.value.length||N.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>M.value.$error||N.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>M.value.$pending||N.value.some(e=>e.$pending)),x=e(()=>!!N.value.length&&N.value.every(e=>e.$edited)),S=e(()=>M.value.$anyEdited||N.value.some(e=>e.$anyEdited)),C=e(()=>({$self:M.value.$issues,$each:N.value.map(e=>e.$issues)})),w=e(()=>({$self:M.value.$errors,$each:N.value.map(e=>e.$errors)})),T=e(()=>({$self:M.value.$silentErrors,$each:N.value.map(e=>e.$silentErrors)})),D=e(()=>k.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):k.value.$rewardEarly),O=e(()=>D.value?!0:k.value.$silent==null?h(s.silent)==null?!1:h(s.silent):k.value.$silent),P=e(()=>k.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):k.value.$autoDirty),F=e(()=>y);function L(){g?.collections&&Object.entries(g?.collections).forEach(([e,s])=>{let h=t();R[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:w,$silentErrors:T,$initialValue:m,$ready:p,$anyDirty:o,$name:F,$each:N,$self:M,$value:n,$edited:x,$anyEdited:S,$issues:C}))}),e}),E.push(h)})}let R={};return L(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:w,$silentErrors:T,$ready:p,$name:F,$shortcuts:R,$silentValue:r,$edited:x,$anyEdited:S,$rewardEarly:D,$silent:O,$autoDirty:P,$issues:C}}),T.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function z(){A?.(),M.value&&M.value.$unwatch(),N.value&&N.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),x.stop(),x=t(),w.stop(),w=t(!0),E.forEach(e=>e.stop()),E=[]}function V(e=!0,t=!1){M.value.$touch(e,t),N.value.forEach(n=>{n.$touch(e,t)})}function H(e,t){if(z(),!t)if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&K(),M.value.$reset(e,t),N.value.forEach(t=>{t.$reset(e,!0)}),t||P()}async function W(){let e=n.value;try{let t=await Promise.allSettled([M.value.$validate(),...N.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function K(){M.value.$clearExternalErrors(),N.value.forEach(e=>{e.$clearExternalErrors()})}function q(e=!0){let t=N.value.map(t=>{if(te(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:J,...Y}=S;return l({$self:M,...Y,...J,$path:a,$each:N,$value:n,$initialValue:m,$validate:W,$unwatch:z,$watch:R,$touch:V,$reset:H,$extractDirtyFields:q,$clearExternalErrors:K})}function Q({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,fieldName:g,...y}){let x=t(),S,T=[],E=null,D=null,O=null,k=null;async function A(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,fieldName:n,...y})]),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,fieldName:t,...y})]})),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,fieldName:t,...y})]})),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,fieldName:t,...y})]}));N.value={...l,...u,...d,...p},t&&I()}let N=y.storage.getFieldsEntry(a);A();function P(){s&&(O=_(s,()=>{L(),A()},{deep:!0}))}function F(){k=_(r,()=>{L(),A(),S.$autoDirty.value&&!S.$silent.value&&B(!1,!0)},{flush:`post`})}function I(){o&&(E?.(),E=_(o,()=>{L(),A()},{deep:!0,flush:`pre`}),P()),d&&(D?.(),D=_(d,()=>{L(),A()},{deep:!0,flush:`post`})),F(),S=x.run(()=>{let n=e({get:()=>r.value,set(e){L(),r.value=e,A(),S.$autoDirty.value&&!S.$silent.value&&B(!1,!0)}}),a=e({get:()=>r.value,set(e){L(),r.value=e,A()}}),o=e(()=>{let e=N.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=N.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=N.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(N.value).reduce((e,[t,n])=>((!ne(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?y.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>{if(!ne(t))return t?.$correct;let n=`required`in t.$rules&&t.$rules.required.$active;return n?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing}):!1}),f=e(()=>{let e=N.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(y.options.rewardEarly)==null?!1:h(y.options.rewardEarly)),b=e(()=>h(y.options.silent)==null?!!_.value:h(y.options.silent)),x=e(()=>h(y.options.autoDirty)==null?!0:h(y.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||E.value)),w=u(!1),E=e(()=>{if(w.value)return!0;let e=N.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),D=e(()=>{let e={};for(let t in N.value)e[t]=N.value[t]?.$issues;return e}),O=e(()=>{let e={};for(let t in N.value)e[t]=N.value[t]?.$errors;return e}),k=e(()=>{let e={};for(let t in N.value)e[t]=N.value[t]?.$silentErrors;return e}),P=e(()=>{if(!Object.keys(N.value).length)return!1;for(let e in N.value)if(!N.value[e]?.$edited)return!1;return!0}),F=e(()=>{for(let e in N.value)if(N.value[e]?.$anyEdited)return!0;return!1}),I=e(()=>g);function R(){y.shortcuts?.nested&&Object.entries(y.shortcuts.nested).forEach(([e,n])=>{let p=t();V[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$pending:E,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:I,$silentErrors:k,$initialValue:m,$errors:O,$fields:N,$edited:P,$anyEdited:F,$issues:D}))}),e}),T.push(p)})}let z=e({get:()=>p?Object.fromEntries(Object.entries(p?.(N.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(){}}),V={};return R(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:E,$issues:D,$errors:O,$silentErrors:k,$ready:C,$name:I,$shortcuts:V,$groups:z,$silentValue:a,$edited:P,$anyEdited:F,$localPending:w,$autoDirty:x,$silent:b,$value:n}})}function L(){if(E?.(),O?.(),k?.(),null?.(),D?.(),T=[],S={},N.value)for(let e of Object.values(N.value))e.$unwatch()}function R(){let e=N.value;for(let t of Object.values(e))t.$clearExternalErrors()}function z(e,t){if(O?.(),L(),!t)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(N.value))t.$reset(e,!0);e?.clearExternalErrors&&R(),P(),t||A()}function B(e=!0,t=!1){for(let n of Object.values(N.value))n.$touch(e,t)}function V(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function H(e=!0){let t=Object.entries(N.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=V(t)),Object.fromEntries(t)}async function U(){try{if(y.schemaMode)return y.onValidate?(B(!1),S.$localPending.value=!0,y.onValidate()):{valid:!1,data:r.value};{let e=r.value,t=await Promise.allSettled(Object.values(N.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`&&e?.value.valid===!0);return{valid:n,data:e}}}catch{return{valid:!1,data:r.value}}finally{S.$localPending.value=!1}}let{$shortcuts:W,$localPending:G,...K}=S,q=l({...K,...W,$path:i,$initialValue:m,$fields:N,$reset:z,$touch:B,$validate:U,$unwatch:L,$watch:I,$clearExternalErrors:R,$extractDirtyFields:H});return v(()=>{for(let e of Object.keys(q).filter(e=>!e.startsWith(`$`)))delete q[e];for(let e of Object.values(N.value))Object.assign(q,{[e.$name]:e})}),q}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 Q({rulesDef:e,...n});{let r=t(),i=r.run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:a,...o}=n;return Q({rulesDef:e,...o,state:i.fakeState})}}else if(ee(e))return le({rulesDef:i(e.value)?e.value:e,...n})}function fe({initialState:e,options:t,scopeRules:n,state:i,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:d=!1,onValidate:f}){let p=R(),m=u(),h=u(),g,v;function y(){g=_(()=>t.externalErrors?.value,()=>{v?.(),t.externalErrors?.value&&Object.keys(t.externalErrors.value).some(e=>e.includes(`.`))?h.value=E(t.externalErrors.value):h.value=t.externalErrors?.value,b()},{immediate:!0,deep:!0})}function b(){v=_(()=>h.value,()=>{g?.(),t.externalErrors?.value&&(t.externalErrors.value=h.value),y()},{deep:!0})}return y(),J(i,n)?m.value=Q({rootRules:n,rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:h,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaErrors:s,rootSchemaErrors:s,schemaMode:d,onValidate:f}):ee(n)&&(m.value=le({rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:h,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaMode:d,schemaErrors:s,onValidate:f})),r()&&c(()=>{m.value?.$unwatch()}),l({regle:m})}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=fe({scopeRules:p,state:f,options:l,initialState:h,customRules:t,shortcuts:r});return{r$:g.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,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function 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,a=((r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${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}});return{useScopedRegle:a}}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(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=xe(n,e?.customUseRegle),{useCollectScope:i}=be(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Ce,useScopedRegle:we}=Se();function Te(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(X(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function 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=r.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,oe as flatErrors,ge as inferRules,ye as mergeRegles,Ee as narrowVariant,ke as refineRules,N as unwrapRuleParameters,Ce as useCollectScope,me as useRegle,fe as useRootStorage,we as useScopedRegle,De as variantToRef};
|
|
1
|
+
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function O(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise(r=>{function s(e){r(e),o()}clearTimeout(i),i=setTimeout(()=>{i=void 0,n||Promise.resolve(e.apply(this,[...a])).then(s).finally(o)},t),n&&!i&&Promise.resolve(e.apply(this,[...a])).then(s).finally(o)})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function k(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!k(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];return!(w(e)&&w(t)&&s&&(r||!r&&n)&&!k(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const A={Inline:`__inline`,Async:`__async`};function j(e,t){return e.some(e=>e[t])}function M(e,t){return 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(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function I(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===A.Async||n.constructor.name===`AsyncFunction`,s={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)}},c=a({...s,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});return c}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;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=N(i._params),n=N(r._params);return e?.[t]===n?.[t]}}):!0}):!1}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function 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(){if(typeof window>`u`)return W();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.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)),n=!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;let a={$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}};return a}),r=n.filter(e=>!!e),i=r.reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),a=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],o=e.$error?e.$schemaErrors??[]:[];return[...i,...a,...o]}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,$debounce:d,modifiers:f}){let p=t(),m={},h,g=e(()=>Z(r.value)&&r.value._async),v=u(!1),{$pending:y,$valid:x,$metadata:S,$validating:C}=c.trySetRuleStatusRef(`${s}.${i}`);function w(){p=t(),m=p.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:x.value,$invalid:!x.value,$pending:y.value},$params:C.value,...S.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),v=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:v,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),h=_(m?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&m.$fieldError.value)&&D()})}w();function T(){x.value=!0,m.$fieldDirty.value&&(y.value=!0)}async function E(){let e=!1;try{let t=m.$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,...m.$params.value),r=a.value;T();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,S.value=n}}catch{e=!1}finally{y.value=!1}return e}async function D(){try{C.value=!0;let e=!1;if(v.value=!0,Z(r.value)&&r.value._async)e=await E();else{let t=m.$validator.value,n=t(a.value,...m.$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,S.value=r}}return x.value=e,e}catch{return!1}finally{C.value=!1,v.value=!1}}function O(){x.value=!0,S.value={},y.value=!1,C.value=!1,w()}function k(){h(),p.stop(),p=t()}return l({...m,$pending:y,$valid:x,$metadata:S,$haveAsync:g,$maybePending:v,$validating:C,$parse:D,$unwatch:k,$watch:w,$reset:O})}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(()=>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};if(g)return{valid:!m?.value?.length,data:e};if(b(q.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.values(q.value).map(e=>e.$parse())),r=t.every(e=>e.status===`fulfilled`&&e.value===!0);return{valid:r,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:_});if(C){let e=s.value?.$id;C.$id=e??String(v),o.addArrayStatus(t,C.$id,C)}return 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(()=>{let t=e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Z(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),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),b=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});return b||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??[]),v=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});return v||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{let t=await Promise.allSettled([N.value.$validate(),...P.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function 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,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,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,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,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])=>{if(!te(t))return t?.$correct;let n=`required`in t.$rules&&t.$rules.required.$active;return n?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing}):!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?.(),null?.(),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,t=await Promise.allSettled(Object.values(P.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`&&e?.value.valid===!0);return{valid:n,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))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(),i=r.run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:a,...o}=n;return de({rulesDef:e,...o,state:i.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),_=fe({scopeRules:p,state:f,options:l,initialState:h,originalState:g,customRules:t,shortcuts:r});return{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,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function 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,a=((r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${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}});return{useScopedRegle:a}}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(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=xe(n,e?.customUseRegle),{useCollectScope:i}=be(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Ce,useScopedRegle:we}=Se();function Te(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Z(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function 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=r.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};
|