@regle/core 0.8.4 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.cjs +73 -37
- package/dist/regle-core.d.cts +100 -16
- package/dist/regle-core.d.ts +100 -16
- package/dist/regle-core.min.cjs +2 -2
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +73 -37
- package/package.json +1 -1
package/dist/regle-core.cjs
CHANGED
|
@@ -1100,20 +1100,42 @@ function createReactiveFieldStatus({
|
|
|
1100
1100
|
const $rules = vue.ref({});
|
|
1101
1101
|
const $localOptions = vue.ref({});
|
|
1102
1102
|
createReactiveRulesResult();
|
|
1103
|
-
function $reset() {
|
|
1103
|
+
function $reset(options2, fromParent) {
|
|
1104
1104
|
$clearExternalErrors();
|
|
1105
1105
|
scopeState.$dirty.value = false;
|
|
1106
1106
|
scopeState.triggerPunishment.value = false;
|
|
1107
1107
|
storage.setDirtyEntry(path, false);
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1108
|
+
if (!fromParent) {
|
|
1109
|
+
if (options2?.toInitialState) {
|
|
1110
|
+
$unwatch();
|
|
1111
|
+
state.value = cloneDeep(initialState);
|
|
1112
|
+
} else if (options2?.toState) {
|
|
1113
|
+
$unwatch();
|
|
1114
|
+
let newInitialState;
|
|
1115
|
+
if (typeof options2?.toState === "function") {
|
|
1116
|
+
newInitialState = options2?.toState();
|
|
1117
|
+
} else {
|
|
1118
|
+
newInitialState = options2?.toState;
|
|
1119
|
+
}
|
|
1120
|
+
initialState.value = cloneDeep(newInitialState);
|
|
1121
|
+
state.value = cloneDeep(newInitialState);
|
|
1122
|
+
} else {
|
|
1123
|
+
initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
if (!fromParent) {
|
|
1127
|
+
Object.entries($rules.value).forEach(([_, rule]) => {
|
|
1128
|
+
rule.$reset();
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1112
1131
|
if (!scopeState.$lazy.value && scopeState.$autoDirty.value) {
|
|
1113
1132
|
Object.values($rules.value).forEach((rule) => {
|
|
1114
1133
|
return rule.$validate();
|
|
1115
1134
|
});
|
|
1116
1135
|
}
|
|
1136
|
+
if (!fromParent) {
|
|
1137
|
+
createReactiveRulesResult();
|
|
1138
|
+
}
|
|
1117
1139
|
}
|
|
1118
1140
|
function $touch(runCommit = true, withConditions = false) {
|
|
1119
1141
|
if (!scopeState.$dirty.value) {
|
|
@@ -1158,11 +1180,6 @@ function createReactiveFieldStatus({
|
|
|
1158
1180
|
return { result: false, data: state.value };
|
|
1159
1181
|
}
|
|
1160
1182
|
}
|
|
1161
|
-
function $resetAll() {
|
|
1162
|
-
$unwatch();
|
|
1163
|
-
state.value = cloneDeep(initialState);
|
|
1164
|
-
$reset();
|
|
1165
|
-
}
|
|
1166
1183
|
function $extractDirtyFields(filterNullishValues = true) {
|
|
1167
1184
|
if (scopeState.$dirty.value) {
|
|
1168
1185
|
return state.value;
|
|
@@ -1203,7 +1220,6 @@ function createReactiveFieldStatus({
|
|
|
1203
1220
|
$validate,
|
|
1204
1221
|
$unwatch,
|
|
1205
1222
|
$watch,
|
|
1206
|
-
$resetAll,
|
|
1207
1223
|
$extractDirtyFields,
|
|
1208
1224
|
$clearExternalErrors
|
|
1209
1225
|
});
|
|
@@ -1592,11 +1608,31 @@ function createReactiveCollectionStatus({
|
|
|
1592
1608
|
$each.$touch(runCommit, withConditions);
|
|
1593
1609
|
});
|
|
1594
1610
|
}
|
|
1595
|
-
function $reset() {
|
|
1611
|
+
function $reset(options2, fromParent) {
|
|
1612
|
+
$unwatch();
|
|
1613
|
+
if (!fromParent) {
|
|
1614
|
+
if (options2?.toInitialState) {
|
|
1615
|
+
state.value = cloneDeep(initialState.value);
|
|
1616
|
+
} else if (options2?.toState) {
|
|
1617
|
+
let newInitialState;
|
|
1618
|
+
if (typeof options2?.toState === "function") {
|
|
1619
|
+
newInitialState = options2?.toState();
|
|
1620
|
+
} else {
|
|
1621
|
+
newInitialState = options2?.toState;
|
|
1622
|
+
}
|
|
1623
|
+
initialState.value = cloneDeep(newInitialState);
|
|
1624
|
+
state.value = cloneDeep(newInitialState);
|
|
1625
|
+
} else {
|
|
1626
|
+
initialState.value = cloneDeep(state.value);
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1596
1629
|
$selfStatus.value.$reset();
|
|
1597
1630
|
$eachStatus.value.forEach(($each) => {
|
|
1598
|
-
$each.$reset();
|
|
1631
|
+
$each.$reset(options2, true);
|
|
1599
1632
|
});
|
|
1633
|
+
if (!fromParent) {
|
|
1634
|
+
createStatus();
|
|
1635
|
+
}
|
|
1600
1636
|
}
|
|
1601
1637
|
async function $validate() {
|
|
1602
1638
|
const data = state.value;
|
|
@@ -1640,11 +1676,6 @@ function createReactiveCollectionStatus({
|
|
|
1640
1676
|
}
|
|
1641
1677
|
return dirtyFields;
|
|
1642
1678
|
}
|
|
1643
|
-
function $resetAll() {
|
|
1644
|
-
$unwatch();
|
|
1645
|
-
state.value = cloneDeep(initialState.value);
|
|
1646
|
-
$reset();
|
|
1647
|
-
}
|
|
1648
1679
|
const { $shortcuts, ...restScopeState } = scopeState;
|
|
1649
1680
|
return vue.reactive({
|
|
1650
1681
|
$self: $selfStatus,
|
|
@@ -1657,7 +1688,6 @@ function createReactiveCollectionStatus({
|
|
|
1657
1688
|
$watch,
|
|
1658
1689
|
$touch,
|
|
1659
1690
|
$reset,
|
|
1660
|
-
$resetAll,
|
|
1661
1691
|
$extractDirtyFields,
|
|
1662
1692
|
$clearExternalErrors
|
|
1663
1693
|
});
|
|
@@ -2032,25 +2062,38 @@ function createReactiveNestedStatus({
|
|
|
2032
2062
|
field.$clearExternalErrors();
|
|
2033
2063
|
});
|
|
2034
2064
|
}
|
|
2035
|
-
function $reset() {
|
|
2065
|
+
function $reset(options, fromParent) {
|
|
2036
2066
|
$unwatchExternalErrors?.();
|
|
2067
|
+
$unwatch();
|
|
2068
|
+
if (!fromParent) {
|
|
2069
|
+
if (options?.toInitialState) {
|
|
2070
|
+
state.value = cloneDeep({ ...initialState.value ?? {} });
|
|
2071
|
+
} else if (options?.toState) {
|
|
2072
|
+
let newInitialState;
|
|
2073
|
+
if (typeof options?.toState === "function") {
|
|
2074
|
+
newInitialState = options?.toState();
|
|
2075
|
+
} else {
|
|
2076
|
+
newInitialState = options?.toState;
|
|
2077
|
+
}
|
|
2078
|
+
initialState.value = cloneDeep(newInitialState);
|
|
2079
|
+
state.value = cloneDeep(newInitialState);
|
|
2080
|
+
} else {
|
|
2081
|
+
initialState.value = cloneDeep(state.value);
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2037
2084
|
Object.values($fields.value).forEach((statusOrField) => {
|
|
2038
|
-
statusOrField.$reset();
|
|
2085
|
+
statusOrField.$reset(options, true);
|
|
2039
2086
|
});
|
|
2040
|
-
initialState.value = { ...cloneDeep(state.value) };
|
|
2041
2087
|
define$WatchExternalErrors();
|
|
2088
|
+
if (!fromParent) {
|
|
2089
|
+
createReactiveFieldsStatus();
|
|
2090
|
+
}
|
|
2042
2091
|
}
|
|
2043
2092
|
function $touch(runCommit = true, withConditions = false) {
|
|
2044
2093
|
Object.values($fields.value).forEach((statusOrField) => {
|
|
2045
2094
|
statusOrField.$touch(runCommit, withConditions);
|
|
2046
2095
|
});
|
|
2047
2096
|
}
|
|
2048
|
-
async function $resetAll() {
|
|
2049
|
-
$unwatch();
|
|
2050
|
-
state.value = cloneDeep({ ...initialState.value ?? {} });
|
|
2051
|
-
$reset();
|
|
2052
|
-
createReactiveFieldsStatus();
|
|
2053
|
-
}
|
|
2054
2097
|
function filterNullishFields(fields) {
|
|
2055
2098
|
return fields.filter(([key, value]) => {
|
|
2056
2099
|
if (isObject(value)) {
|
|
@@ -2109,7 +2152,6 @@ function createReactiveNestedStatus({
|
|
|
2109
2152
|
...$shortcuts,
|
|
2110
2153
|
$fields,
|
|
2111
2154
|
$value: state,
|
|
2112
|
-
$resetAll,
|
|
2113
2155
|
$reset,
|
|
2114
2156
|
$touch,
|
|
2115
2157
|
$validate,
|
|
@@ -2367,9 +2409,9 @@ function mergeRegles(regles, _scoped) {
|
|
|
2367
2409
|
return regles;
|
|
2368
2410
|
}
|
|
2369
2411
|
});
|
|
2370
|
-
function $reset() {
|
|
2412
|
+
function $reset(options) {
|
|
2371
2413
|
Object.values(regles).forEach((regle) => {
|
|
2372
|
-
regle.$reset();
|
|
2414
|
+
regle.$reset(options);
|
|
2373
2415
|
});
|
|
2374
2416
|
}
|
|
2375
2417
|
function $touch() {
|
|
@@ -2377,11 +2419,6 @@ function mergeRegles(regles, _scoped) {
|
|
|
2377
2419
|
regle.$touch();
|
|
2378
2420
|
});
|
|
2379
2421
|
}
|
|
2380
|
-
function $resetAll() {
|
|
2381
|
-
Object.values(regles).forEach((regle) => {
|
|
2382
|
-
regle.$resetAll();
|
|
2383
|
-
});
|
|
2384
|
-
}
|
|
2385
2422
|
function $extractDirtyFields(filterNullishValues = true) {
|
|
2386
2423
|
return Object.values(regles).map((regle) => regle.$extractDirtyFields(filterNullishValues));
|
|
2387
2424
|
}
|
|
@@ -2427,7 +2464,6 @@ function mergeRegles(regles, _scoped) {
|
|
|
2427
2464
|
$ready,
|
|
2428
2465
|
$edited,
|
|
2429
2466
|
$anyEdited,
|
|
2430
|
-
$resetAll,
|
|
2431
2467
|
$reset,
|
|
2432
2468
|
$touch,
|
|
2433
2469
|
$validate,
|
package/dist/regle-core.d.cts
CHANGED
|
@@ -180,6 +180,11 @@ endIfEqual('abc', '123');
|
|
|
180
180
|
*/
|
|
181
181
|
type IsNever$1<T> = [T] extends [never] ? true : false;
|
|
182
182
|
|
|
183
|
+
/**
|
|
184
|
+
Disallows any of the given keys.
|
|
185
|
+
*/
|
|
186
|
+
type RequireNone<KeysType extends PropertyKey> = Partial<Record<KeysType, never>>;
|
|
187
|
+
|
|
183
188
|
/**
|
|
184
189
|
Matches any primitive, `void`, `Date`, or `RegExp` value.
|
|
185
190
|
*/
|
|
@@ -202,6 +207,76 @@ type HasMultipleCallSignatures<T extends (...arguments_: any[]) => unknown> =
|
|
|
202
207
|
: true
|
|
203
208
|
: false;
|
|
204
209
|
|
|
210
|
+
/**
|
|
211
|
+
Create a type that requires exactly one of the given keys and disallows more. The remaining keys are kept as is.
|
|
212
|
+
|
|
213
|
+
Use-cases:
|
|
214
|
+
- Creating interfaces for components that only need one of the keys to display properly.
|
|
215
|
+
- Declaring generic keys in a single place for a single use-case that gets narrowed down via `RequireExactlyOne`.
|
|
216
|
+
|
|
217
|
+
The caveat with `RequireExactlyOne` is that TypeScript doesn't always know at compile time every key that will exist at runtime. Therefore `RequireExactlyOne` can't do anything to prevent extra keys it doesn't know about.
|
|
218
|
+
|
|
219
|
+
@example
|
|
220
|
+
```
|
|
221
|
+
import type {RequireExactlyOne} from 'type-fest';
|
|
222
|
+
|
|
223
|
+
type Responder = {
|
|
224
|
+
text: () => string;
|
|
225
|
+
json: () => string;
|
|
226
|
+
secure: boolean;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
const responder: RequireExactlyOne<Responder, 'text' | 'json'> = {
|
|
230
|
+
// Adding a `text` key here would cause a compile error.
|
|
231
|
+
|
|
232
|
+
json: () => '{"message": "ok"}',
|
|
233
|
+
secure: true
|
|
234
|
+
};
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
@category Object
|
|
238
|
+
*/
|
|
239
|
+
type RequireExactlyOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
|
|
240
|
+
{[Key in KeysType]: (
|
|
241
|
+
Required<Pick<ObjectType, Key>> &
|
|
242
|
+
Partial<Record<Exclude<KeysType, Key>, never>>
|
|
243
|
+
)}[KeysType] & Omit<ObjectType, KeysType>;
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
Create a type that requires exactly one of the given keys and disallows more, or none of the given keys. The remaining keys are kept as is.
|
|
247
|
+
|
|
248
|
+
@example
|
|
249
|
+
```
|
|
250
|
+
import type {RequireOneOrNone} from 'type-fest';
|
|
251
|
+
|
|
252
|
+
type Responder = RequireOneOrNone<{
|
|
253
|
+
text: () => string;
|
|
254
|
+
json: () => string;
|
|
255
|
+
secure: boolean;
|
|
256
|
+
}, 'text' | 'json'>;
|
|
257
|
+
|
|
258
|
+
const responder1: Responder = {
|
|
259
|
+
secure: true
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
const responder2: Responder = {
|
|
263
|
+
text: () => '{"message": "hi"}',
|
|
264
|
+
secure: true
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
const responder3: Responder = {
|
|
268
|
+
json: () => '{"message": "ok"}',
|
|
269
|
+
secure: true
|
|
270
|
+
};
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
@category Object
|
|
274
|
+
*/
|
|
275
|
+
type RequireOneOrNone<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> = (
|
|
276
|
+
| RequireExactlyOne<ObjectType, KeysType>
|
|
277
|
+
| RequireNone<KeysType>
|
|
278
|
+
) & Omit<ObjectType, KeysType>; // Ignore unspecified keys.
|
|
279
|
+
|
|
205
280
|
/**
|
|
206
281
|
@see {@link PartialDeep}
|
|
207
282
|
*/
|
|
@@ -569,6 +644,17 @@ type IsPropertyOutputRequired<TState, TRule extends RegleFormPropertyType<any, a
|
|
|
569
644
|
] extends [TState] ? unknown : NonNullable<TState> extends Array<any> ? TRule extends RegleCollectionRuleDecl<any, any> ? ArrayHaveAtLeastOneRequiredField<NonNullable<TState>, TRule> extends false ? false : true : false : TRule extends ReglePartialRuleTree<any, any> ? ExtendOnlyRealRecord<TState> extends true ? ObjectHaveAtLeastOneRequiredField<NonNullable<TState> extends Record<string, any> ? NonNullable<TState> : {}, TRule> extends false ? false : true : TRule extends RegleRuleDecl<any, any> ? FieldHaveRequiredRule<TRule> extends false ? false : true : false : false;
|
|
570
645
|
type SafeFieldProperty<TState, TRule extends RegleFormPropertyType<any, any> | undefined = never> = TRule extends RegleRuleDecl<any, any> ? unknown extends TRule['required'] ? Maybe<TState> : TRule['required'] extends undefined ? never : TRule['required'] extends RegleRuleDefinition<any, infer Params, any, any, any> ? Params extends never[] ? Maybe<TState> : Maybe<TState> : Maybe<TState> : Maybe<TState>;
|
|
571
646
|
|
|
647
|
+
type ResetOptions<TState extends unknown> = RequireOneOrNone<{
|
|
648
|
+
/**
|
|
649
|
+
* Reset validation status and reset form state to its initial state
|
|
650
|
+
*/
|
|
651
|
+
toInitialState?: boolean;
|
|
652
|
+
/**
|
|
653
|
+
* Reset validation status and reset form state to the given state
|
|
654
|
+
*/
|
|
655
|
+
toState?: TState | (() => TState);
|
|
656
|
+
}, 'toInitialState' | 'toState'>;
|
|
657
|
+
|
|
572
658
|
type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> = <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : MismatchInfo<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>>>(state: MaybeRef<TState> | DeepReactiveState<TState>, rulesFactory: MaybeRefOrGetter<TRules>, options?: Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Unwrap<TState>, TRules, TValidationGroups> & TAdditionalOptions) => Regle<Unwrap<TState>, TRules, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
|
|
573
659
|
/**
|
|
574
660
|
* useRegle serves as the foundation for validation logic.
|
|
@@ -1458,7 +1544,8 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
1458
1544
|
} & {
|
|
1459
1545
|
readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? NonNullable<TRules[TKey]> extends RegleRuleDecl ? TKey : never : never]-?: InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts>;
|
|
1460
1546
|
};
|
|
1461
|
-
/**
|
|
1547
|
+
/**
|
|
1548
|
+
* Collection of all the error messages, collected for all children properties and nested forms.
|
|
1462
1549
|
*
|
|
1463
1550
|
* Only contains errors from properties where $dirty equals true. */
|
|
1464
1551
|
readonly $errors: RegleErrorTree<TState>;
|
|
@@ -1475,7 +1562,7 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
1475
1562
|
* @internal
|
|
1476
1563
|
* @reference {@link RegleStatus}
|
|
1477
1564
|
*/
|
|
1478
|
-
interface $InternalRegleStatus extends
|
|
1565
|
+
interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
1479
1566
|
$fields: {
|
|
1480
1567
|
[x: string]: $InternalRegleStatusType;
|
|
1481
1568
|
};
|
|
@@ -1528,7 +1615,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
1528
1615
|
* @internal
|
|
1529
1616
|
* @reference {@link RegleFieldStatus}
|
|
1530
1617
|
*/
|
|
1531
|
-
interface $InternalRegleFieldStatus extends
|
|
1618
|
+
interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
1532
1619
|
$value: any;
|
|
1533
1620
|
$silentValue: any;
|
|
1534
1621
|
readonly $rules: Record<string, $InternalRegleRuleStatus>;
|
|
@@ -1572,21 +1659,21 @@ interface RegleCommonStatus<TValue = any> {
|
|
|
1572
1659
|
/** $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. */
|
|
1573
1660
|
$silentValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
|
|
1574
1661
|
/** Marks the field and all nested properties as $dirty. */
|
|
1575
|
-
$touch(
|
|
1662
|
+
$touch(): void;
|
|
1576
1663
|
/**
|
|
1577
|
-
*
|
|
1578
|
-
*
|
|
1579
|
-
*
|
|
1664
|
+
* Reset the validation status to a pristine state while keeping the current form state.
|
|
1665
|
+
* Resets the `$dirty` state on all nested properties of a form.
|
|
1666
|
+
* Rerun rules if `$lazy` is false
|
|
1580
1667
|
*/
|
|
1581
|
-
$reset(): void;
|
|
1582
|
-
/** Will reset both your validation state and your form state to their initial values. */
|
|
1583
|
-
$resetAll: () => void;
|
|
1668
|
+
$reset(options?: ResetOptions<TValue>): void;
|
|
1584
1669
|
/** Clears the $externalResults state back to an empty object. */
|
|
1585
1670
|
$clearExternalErrors(): void;
|
|
1586
|
-
|
|
1671
|
+
}
|
|
1672
|
+
interface $InternalRegleCommonStatus extends Omit<RegleCommonStatus, '$touch' | '$reset'> {
|
|
1673
|
+
$touch(runCommit?: boolean, withConditions?: boolean): void;
|
|
1587
1674
|
$unwatch(): void;
|
|
1588
|
-
/** @interal */
|
|
1589
1675
|
$watch(): void;
|
|
1676
|
+
$reset(options?: ResetOptions<any>, fromParent?: boolean): void;
|
|
1590
1677
|
}
|
|
1591
1678
|
/**
|
|
1592
1679
|
* @public
|
|
@@ -1643,9 +1730,9 @@ interface $InternalRegleRuleStatus {
|
|
|
1643
1730
|
$fieldError: boolean;
|
|
1644
1731
|
$validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
|
|
1645
1732
|
$validate(): Promise<boolean>;
|
|
1733
|
+
$reset(): void;
|
|
1646
1734
|
$unwatch(): void;
|
|
1647
1735
|
$watch(): void;
|
|
1648
|
-
$reset(): void;
|
|
1649
1736
|
}
|
|
1650
1737
|
/**
|
|
1651
1738
|
* @public
|
|
@@ -1684,9 +1771,6 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
|
|
|
1684
1771
|
readonly $externalErrors?: string[];
|
|
1685
1772
|
$extractDirtyFields: (filterNullishValues?: boolean) => any[];
|
|
1686
1773
|
$validate: () => Promise<$InternalRegleResult>;
|
|
1687
|
-
/** Track each array state */
|
|
1688
|
-
$unwatch(): void;
|
|
1689
|
-
$watch(): void;
|
|
1690
1774
|
}
|
|
1691
1775
|
|
|
1692
1776
|
/**
|
package/dist/regle-core.d.ts
CHANGED
|
@@ -180,6 +180,11 @@ endIfEqual('abc', '123');
|
|
|
180
180
|
*/
|
|
181
181
|
type IsNever$1<T> = [T] extends [never] ? true : false;
|
|
182
182
|
|
|
183
|
+
/**
|
|
184
|
+
Disallows any of the given keys.
|
|
185
|
+
*/
|
|
186
|
+
type RequireNone<KeysType extends PropertyKey> = Partial<Record<KeysType, never>>;
|
|
187
|
+
|
|
183
188
|
/**
|
|
184
189
|
Matches any primitive, `void`, `Date`, or `RegExp` value.
|
|
185
190
|
*/
|
|
@@ -202,6 +207,76 @@ type HasMultipleCallSignatures<T extends (...arguments_: any[]) => unknown> =
|
|
|
202
207
|
: true
|
|
203
208
|
: false;
|
|
204
209
|
|
|
210
|
+
/**
|
|
211
|
+
Create a type that requires exactly one of the given keys and disallows more. The remaining keys are kept as is.
|
|
212
|
+
|
|
213
|
+
Use-cases:
|
|
214
|
+
- Creating interfaces for components that only need one of the keys to display properly.
|
|
215
|
+
- Declaring generic keys in a single place for a single use-case that gets narrowed down via `RequireExactlyOne`.
|
|
216
|
+
|
|
217
|
+
The caveat with `RequireExactlyOne` is that TypeScript doesn't always know at compile time every key that will exist at runtime. Therefore `RequireExactlyOne` can't do anything to prevent extra keys it doesn't know about.
|
|
218
|
+
|
|
219
|
+
@example
|
|
220
|
+
```
|
|
221
|
+
import type {RequireExactlyOne} from 'type-fest';
|
|
222
|
+
|
|
223
|
+
type Responder = {
|
|
224
|
+
text: () => string;
|
|
225
|
+
json: () => string;
|
|
226
|
+
secure: boolean;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
const responder: RequireExactlyOne<Responder, 'text' | 'json'> = {
|
|
230
|
+
// Adding a `text` key here would cause a compile error.
|
|
231
|
+
|
|
232
|
+
json: () => '{"message": "ok"}',
|
|
233
|
+
secure: true
|
|
234
|
+
};
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
@category Object
|
|
238
|
+
*/
|
|
239
|
+
type RequireExactlyOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
|
|
240
|
+
{[Key in KeysType]: (
|
|
241
|
+
Required<Pick<ObjectType, Key>> &
|
|
242
|
+
Partial<Record<Exclude<KeysType, Key>, never>>
|
|
243
|
+
)}[KeysType] & Omit<ObjectType, KeysType>;
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
Create a type that requires exactly one of the given keys and disallows more, or none of the given keys. The remaining keys are kept as is.
|
|
247
|
+
|
|
248
|
+
@example
|
|
249
|
+
```
|
|
250
|
+
import type {RequireOneOrNone} from 'type-fest';
|
|
251
|
+
|
|
252
|
+
type Responder = RequireOneOrNone<{
|
|
253
|
+
text: () => string;
|
|
254
|
+
json: () => string;
|
|
255
|
+
secure: boolean;
|
|
256
|
+
}, 'text' | 'json'>;
|
|
257
|
+
|
|
258
|
+
const responder1: Responder = {
|
|
259
|
+
secure: true
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
const responder2: Responder = {
|
|
263
|
+
text: () => '{"message": "hi"}',
|
|
264
|
+
secure: true
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
const responder3: Responder = {
|
|
268
|
+
json: () => '{"message": "ok"}',
|
|
269
|
+
secure: true
|
|
270
|
+
};
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
@category Object
|
|
274
|
+
*/
|
|
275
|
+
type RequireOneOrNone<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> = (
|
|
276
|
+
| RequireExactlyOne<ObjectType, KeysType>
|
|
277
|
+
| RequireNone<KeysType>
|
|
278
|
+
) & Omit<ObjectType, KeysType>; // Ignore unspecified keys.
|
|
279
|
+
|
|
205
280
|
/**
|
|
206
281
|
@see {@link PartialDeep}
|
|
207
282
|
*/
|
|
@@ -569,6 +644,17 @@ type IsPropertyOutputRequired<TState, TRule extends RegleFormPropertyType<any, a
|
|
|
569
644
|
] extends [TState] ? unknown : NonNullable<TState> extends Array<any> ? TRule extends RegleCollectionRuleDecl<any, any> ? ArrayHaveAtLeastOneRequiredField<NonNullable<TState>, TRule> extends false ? false : true : false : TRule extends ReglePartialRuleTree<any, any> ? ExtendOnlyRealRecord<TState> extends true ? ObjectHaveAtLeastOneRequiredField<NonNullable<TState> extends Record<string, any> ? NonNullable<TState> : {}, TRule> extends false ? false : true : TRule extends RegleRuleDecl<any, any> ? FieldHaveRequiredRule<TRule> extends false ? false : true : false : false;
|
|
570
645
|
type SafeFieldProperty<TState, TRule extends RegleFormPropertyType<any, any> | undefined = never> = TRule extends RegleRuleDecl<any, any> ? unknown extends TRule['required'] ? Maybe<TState> : TRule['required'] extends undefined ? never : TRule['required'] extends RegleRuleDefinition<any, infer Params, any, any, any> ? Params extends never[] ? Maybe<TState> : Maybe<TState> : Maybe<TState> : Maybe<TState>;
|
|
571
646
|
|
|
647
|
+
type ResetOptions<TState extends unknown> = RequireOneOrNone<{
|
|
648
|
+
/**
|
|
649
|
+
* Reset validation status and reset form state to its initial state
|
|
650
|
+
*/
|
|
651
|
+
toInitialState?: boolean;
|
|
652
|
+
/**
|
|
653
|
+
* Reset validation status and reset form state to the given state
|
|
654
|
+
*/
|
|
655
|
+
toState?: TState | (() => TState);
|
|
656
|
+
}, 'toInitialState' | 'toState'>;
|
|
657
|
+
|
|
572
658
|
type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> = <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : MismatchInfo<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>>>(state: MaybeRef<TState> | DeepReactiveState<TState>, rulesFactory: MaybeRefOrGetter<TRules>, options?: Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Unwrap<TState>, TRules, TValidationGroups> & TAdditionalOptions) => Regle<Unwrap<TState>, TRules, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
|
|
573
659
|
/**
|
|
574
660
|
* useRegle serves as the foundation for validation logic.
|
|
@@ -1458,7 +1544,8 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
1458
1544
|
} & {
|
|
1459
1545
|
readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? NonNullable<TRules[TKey]> extends RegleRuleDecl ? TKey : never : never]-?: InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts>;
|
|
1460
1546
|
};
|
|
1461
|
-
/**
|
|
1547
|
+
/**
|
|
1548
|
+
* Collection of all the error messages, collected for all children properties and nested forms.
|
|
1462
1549
|
*
|
|
1463
1550
|
* Only contains errors from properties where $dirty equals true. */
|
|
1464
1551
|
readonly $errors: RegleErrorTree<TState>;
|
|
@@ -1475,7 +1562,7 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
1475
1562
|
* @internal
|
|
1476
1563
|
* @reference {@link RegleStatus}
|
|
1477
1564
|
*/
|
|
1478
|
-
interface $InternalRegleStatus extends
|
|
1565
|
+
interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
1479
1566
|
$fields: {
|
|
1480
1567
|
[x: string]: $InternalRegleStatusType;
|
|
1481
1568
|
};
|
|
@@ -1528,7 +1615,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
1528
1615
|
* @internal
|
|
1529
1616
|
* @reference {@link RegleFieldStatus}
|
|
1530
1617
|
*/
|
|
1531
|
-
interface $InternalRegleFieldStatus extends
|
|
1618
|
+
interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
1532
1619
|
$value: any;
|
|
1533
1620
|
$silentValue: any;
|
|
1534
1621
|
readonly $rules: Record<string, $InternalRegleRuleStatus>;
|
|
@@ -1572,21 +1659,21 @@ interface RegleCommonStatus<TValue = any> {
|
|
|
1572
1659
|
/** $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. */
|
|
1573
1660
|
$silentValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
|
|
1574
1661
|
/** Marks the field and all nested properties as $dirty. */
|
|
1575
|
-
$touch(
|
|
1662
|
+
$touch(): void;
|
|
1576
1663
|
/**
|
|
1577
|
-
*
|
|
1578
|
-
*
|
|
1579
|
-
*
|
|
1664
|
+
* Reset the validation status to a pristine state while keeping the current form state.
|
|
1665
|
+
* Resets the `$dirty` state on all nested properties of a form.
|
|
1666
|
+
* Rerun rules if `$lazy` is false
|
|
1580
1667
|
*/
|
|
1581
|
-
$reset(): void;
|
|
1582
|
-
/** Will reset both your validation state and your form state to their initial values. */
|
|
1583
|
-
$resetAll: () => void;
|
|
1668
|
+
$reset(options?: ResetOptions<TValue>): void;
|
|
1584
1669
|
/** Clears the $externalResults state back to an empty object. */
|
|
1585
1670
|
$clearExternalErrors(): void;
|
|
1586
|
-
|
|
1671
|
+
}
|
|
1672
|
+
interface $InternalRegleCommonStatus extends Omit<RegleCommonStatus, '$touch' | '$reset'> {
|
|
1673
|
+
$touch(runCommit?: boolean, withConditions?: boolean): void;
|
|
1587
1674
|
$unwatch(): void;
|
|
1588
|
-
/** @interal */
|
|
1589
1675
|
$watch(): void;
|
|
1676
|
+
$reset(options?: ResetOptions<any>, fromParent?: boolean): void;
|
|
1590
1677
|
}
|
|
1591
1678
|
/**
|
|
1592
1679
|
* @public
|
|
@@ -1643,9 +1730,9 @@ interface $InternalRegleRuleStatus {
|
|
|
1643
1730
|
$fieldError: boolean;
|
|
1644
1731
|
$validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
|
|
1645
1732
|
$validate(): Promise<boolean>;
|
|
1733
|
+
$reset(): void;
|
|
1646
1734
|
$unwatch(): void;
|
|
1647
1735
|
$watch(): void;
|
|
1648
|
-
$reset(): void;
|
|
1649
1736
|
}
|
|
1650
1737
|
/**
|
|
1651
1738
|
* @public
|
|
@@ -1684,9 +1771,6 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
|
|
|
1684
1771
|
readonly $externalErrors?: string[];
|
|
1685
1772
|
$extractDirtyFields: (filterNullishValues?: boolean) => any[];
|
|
1686
1773
|
$validate: () => Promise<$InternalRegleResult>;
|
|
1687
|
-
/** Track each array state */
|
|
1688
|
-
$unwatch(): void;
|
|
1689
|
-
$watch(): void;
|
|
1690
1774
|
}
|
|
1691
1775
|
|
|
1692
1776
|
/**
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Bt(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Bt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ae(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Be=(r=>(r.Inline="__inline",r.Async="__async",r))(Be||{});function yt(e,t){return e.some(r=>r[t])}function gt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function $t(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function vt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...v){return e.validator(c,...te(v.length?v:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:te(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:te(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:te(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let v=e.validator(c,...te(t)),m;return v instanceof Promise?v.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=v,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:$t(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...u){return He(e,...u)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),u=vue.shallowRef(new Map);function R($){let b=t.value.get($);if(b)return b;{let E=vue.ref({});return t.value.set($,E),E}}function c($){let b=r.value.get($);if(b)return b;{let E=vue.ref([]);return r.value.set($,E),E}}function v($,b,E){u.value.set(`${$}-${b}`,E);}function m($,b){return u.value.get(`${$}-${b}`)}function h($,b){$&&b!=null&&u.value.delete(`${$}-${b}`);}function F($,b){n.value.set($,b);}function D($){return n.value.get($)??false}function P($,b){e.value.set($,b);}function O($,b){let E=e.value.get($);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a($,b){let E=Object.keys(b),i=Object.keys($);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=$[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=te(s._params),J=te(o._params);return k?.[_]===J?.[_]}}):true})}function w($){let b=l.value.get($);if(b)return b;{let E=vue.ref(false),i=vue.ref(true),S=vue.ref({}),V=vue.ref(false);return l.value.set($,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:D,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:v,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ae(e.value)}function Ke(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(vue.version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function ht(e){let t=false,r,n=vue.effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ae(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let v=vue.effectScope(),m={},h,F=vue.ref(false),{$pending:D,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){v=vue.effectScope(),m=v.run(()=>{let o=vue.ref(false),s=vue.ref(false),C=vue.ref(true),_=vue.ref(false),k=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$correct:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:D.value},$params:d.value,...O.value})),I=vue.computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function B(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let X=`_${p}_patched`;A&&!t.value[X]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=vue.computed(()=>{let p=B("message");return ee(p)&&(p="This field is not valid"),p}),de=vue.computed(()=>B("tooltip")),pe=vue.computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>Pe(t)?t.value.validator:t.value),d=vue.computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),f=vue.computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldCorrect:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=vue.watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function $(){P.value=true,m.$fieldDirty.value&&(D.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;$();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{D.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},D.value=false,a.value=false,w();}function V(){h(),v.stop(),v=vue.effectScope();}return vue.reactive({...m,$pending:D,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:v,schemaMode:m,onUnwatch:h,$isArray:F,initialState:D,shortcuts:P}){let O=vue.effectScope(),a,w=[],$,b,E,i,S,V=()=>{};function o(){let g=t.value,G=u.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([L])=>L.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([L])=>!L.startsWith("$")).map(([L,x])=>{if(x){let ue=vue.toRef(()=>x);return [L,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:L,state:e,path:n,storage:u,$debounce:B.value.$debounce})]}return []}).filter(L=>!!L.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,g);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),$?.(),b?.(),O.stop(),O=vue.effectScope(),w.forEach(g=>g.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$watch();}),a=O.run(()=>{let g=vue.ref(false),G=vue.ref(false),L=vue.computed(()=>g.value),x=vue.computed(()=>B.value.$debounce),ue=vue.computed(()=>B.value.$lazy!=null?B.value.$lazy:vue.unref(R.lazy)!=null?vue.unref(R.lazy):false),le=vue.computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:vue.unref(R.rewardEarly)!=null?vue.unref(R.rewardEarly):false),ye=vue.computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:vue.unref(R.clearExternalErrorsOnChange)!=null?vue.unref(R.clearExternalErrorsOnChange):true),U=vue.computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:vue.unref(R.autoDirty)!=null?vue.unref(R.autoDirty):!le.value),M=vue.computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$validating)),H=vue.computed({get:()=>e.value,set(oe){$(),e.value=oe,k();}}),ge=vue.computed(()=>$e.value&&!Oe.value&&g.value),lt=vue.computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value}})),ot=vue.computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value},silent:true})),We=vue.computed(()=>g.value?D.value instanceof Date&&e.value instanceof Date?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),st=vue.computed(()=>We.value),ut=vue.computed(()=>Ct({field:{$rules:I.value}})),it=vue.computed(()=>U.value?L.value&&!($e.value||Oe.value):!($e.value||Oe.value)),Oe=vue.computed(()=>G.value||!le.value?Object.entries(I.value).some(([oe,Y])=>Y.$pending):false),$e=vue.computed(()=>c?.value?.length||v?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([oe,Y])=>!Y.$valid):false),ct=vue.computed(()=>l),Fe=vue.computed(()=>!!(ee(I.value)&&!m)),ft=vue.computed(()=>c?.value?.length||Fe.value?false:g.value&&!ee(e.value)&&!M.value?m?!v?.value?.length:Object.values(I.value).some(Y=>Y.$active)?Object.values(I.value).filter(Y=>Y.$active).every(Y=>Y.$valid):false:false),Wt=vue.computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$haveAsync));function Lt(){P?.fields&&Object.entries(P.fields).forEach(([oe,Y])=>{let dt=vue.effectScope();Rt[oe]=dt.run(()=>{let pt=vue.ref();return vue.watchEffect(()=>{pt.value=Y(vue.reactive({$dirty:g,$externalErrors:c?.value??[],$value:e,$silentValue:H,$rules:I,$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:L,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return vue.watch($e,oe=>{oe||(G.value=false);}),{$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$debounce:x,$lazy:ue,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ye,$anyDirty:L,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:g,triggerPunishment:G,processShortcuts:Lt,$silentValue:H,$inactive:Fe}}),k(),E=vue.watch(a.$dirty,g=>{u.setDirtyEntry(n,g),Object.values(I.value).forEach(G=>{G.$fieldDirty=g;});}),S=vue.watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldCorrect=a.$correct.value;});}),b=vue.watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),i=vue.watch(a.$haveAnyAsyncRule,s);}function k(){$=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=vue.ref({}),B=vue.ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),D.value=ae(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([g,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(g=>g.$validate());}function de(g=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():g&&V();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return m?{result:!v?.value?.length,data:g}:ee(I.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Q(D),ie();}function d(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:X,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:j,$debounce:z,$lazy:Z,triggerPunishment:q,...se}=a;return vue.reactive({...se,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:v,schemaErrors:m,initialState:h,shortcuts:F,fieldName:D,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=vue.toRef(v?.value??[],r),$=vue.computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:vue.toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:$,initialState:h,shortcuts:F,fieldName:D,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:v,initialState:m,shortcuts:h,fieldName:F}){let D=vue.effectScope(),P,O=vue.effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=vue.ref(),b=vue.ref(e.value),E,i=vue.ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,vue.toRef(()=>d),f);p&&w.push(p);let A=vue.toRef(m.value??[],f),X=vue.toRef(R?.value??{},"$each"),y=vue.computed(()=>c?.value?.$each),j=Xe({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>d),index:f,options:u,storage:l,externalErrors:X,schemaErrors:y,initialState:A,shortcuts:h,fieldName:F,schemaMode:v});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:vue.toRef(R?.value??{},"$self"),schemaErrors:vue.computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:v});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Q(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=vue.toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus($.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:X}=Ke(t.value.$each,T,p);A&&w.push(A);let y=vue.toRef(R?.value??{},"$each"),j=vue.computed(()=>c?.value?.$each??[]),z=Xe({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:p,options:u,storage:l,externalErrors:y,schemaErrors:j,initialState:vue.toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:v});return z||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus($.value,p.toString());});}else S.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),D=vue.effectScope(),P=D.run(()=>{let d=vue.computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),f=vue.computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),p=vue.computed(()=>i.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=vue.computed(()=>i.value.$invalid||S.value.some(x=>x.$invalid)),A=vue.computed(()=>(ee(i.value.$rules)?true:i.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),X=vue.computed(()=>i.value.$error||S.value.some(x=>x.$error)),y=vue.computed(()=>!(T.value||j.value)),j=vue.computed(()=>i.value.$pending||S.value.some(x=>x.$pending)),z=vue.computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=vue.computed(()=>i.value.$anyEdited||S.value.some(x=>x.$anyEdited)),q=vue.computed(()=>({$self:i.value.$errors,$each:S.value.map(x=>x.$errors)})),se=vue.computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([x,ue])=>{let le=vue.effectScope();L[x]=le.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=ue(vue.reactive({$dirty:f,$error:X,$silentValue:d,$pending:j,$invalid:T,$correct:A,$errors:q,$ready:y,$silentErrors:se,$anyDirty:p,$name:g,$each:S,$self:i,$value:e,$edited:z,$anyEdited:Z}));}),ye}),w.push(le);});}let L={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:j,$errors:q,$silentErrors:se,$ready:y,$name:g,$shortcuts:L,$silentValue:d,$edited:z,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),D.stop(),D=vue.effectScope(),O.stop(),O=vue.effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function B(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>ee(p))&&(f=[]),f}function de(){_(),e.value=Q(m.value),J();}let{$shortcuts:pe,...me}=P;return vue.reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:B})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:v,fieldName:m,...h}){let F=vue.effectScope(),D,P=[],O=null,a=null,w=null,$=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([y,j])=>!!j).map(([y,j])=>{if(j){let z=vue.toRef(t.value??{},y),Z=vue.toRef(()=>j),q=vue.toRef(l?.value??{},y),se=vue.computed(()=>u?.value?.[y]),g=vue.toRef(v?.value??{},y);return [y,Te({state:z,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:se,initialState:g,fieldName:y,...h})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([y,j])=>!(y in e.value)&&!!j).map(([y])=>{let j=vue.toRef(t.value??{},y),z=vue.toRef(l?.value??{},y),Z=vue.computed(()=>u?.value?.[y]),q=vue.toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),A=Object.fromEntries(Object.entries(vue.unref(u)??{}).map(([y])=>{let j=vue.toRef(t.value??{},y),z=vue.toRef(l?.value??{},y),Z=vue.computed(()=>u?.value?.[y]),q=vue.toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(A??{}))).map(([y])=>{let j=vue.toRef(t.value??{},y),z=vue.toRef(l?.value??{},y),Z=vue.computed(()=>u?.value?.[y]),q=vue.toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]}));i.value={...p,...T,...A,...X},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=vue.watch(l,()=>{s(),E();},{deep:true}));}function V(){$=vue.watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=vue.watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),D=F.run(()=>{let d=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=vue.computed(()=>{let U=Object.entries(i.value).filter(([M,H])=>Dt(H)?!H.$inactive:true);return U.length?U.every(([M,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),X=vue.computed(()=>p.value&&!q.value&&T.value),y=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),j=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!y.value),z=vue.computed(()=>j.value?p.value&&!(T.value||q.value):!(T.value||q.value)),Z=vue.ref(false),q=vue.computed(()=>Z.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),se=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),L=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),x=vue.computed(()=>m);function ue(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let H=vue.effectScope();ye[U]=H.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=M(vue.reactive({$dirty:f,$value:t,$silentValue:d,$error:X,$pending:q,$invalid:T,$correct:A,$ready:z,$anyDirty:p,$name:x,$silentErrors:g,$errors:se,$fields:i,$edited:G,$anyEdited:L}));}),ge}),P.push(H);});}let le=vue.computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,yt(M,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,gt(M,H)]))}]:[])):{},set(){}}),ye={};return ue(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:q,$errors:se,$silentErrors:g,$ready:z,$name:x,$shortcuts:ye,$groups:le,$silentValue:d,$edited:G,$anyEdited:L,$localPending:Z}});}function s(){O?.(),w?.(),$?.(),a?.(),P=[],D={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),v.value={...Q(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Q({...v.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ae(p)?!(p&&typeof p=="object"&&"_null"in p)&&!ee(p):Array.isArray(p)?p.length:true)}function B(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),D.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return vue.reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:B})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let R=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),vue.watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:v}){let m=qe(),h=vue.ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:v}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let v=vue.isRef(R)?R:vue.computed(typeof R=="function"?R:()=>R),m={...n,...c},h=vue.isRef(u)?u:vue.ref(u),F=vue.ref({...Q(h.value)});return {r$:Ie({scopeRules:v,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),v=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$correct||C.$anyDirty&&!C.$invalid)}),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=vue.computed(()=>r?Object.values(e):e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:D,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$correct:v,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:$,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=vue.computed(()=>vue.toValue(r));R();let l=vue.ref(c(e.value)),u=vue.reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,R),vue.watch(e,v=>{l.value=c(v);},{deep:true});function c(v){if(n.value){let m=v[n.value]??{};return Me(m,true)}else return Me(v["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...v}=R??{},m=vue.computed(()=>vue.toValue(c)),h=vue.ref(`${Object.keys(e.value).length+1}-${he()}`),F=vue.computed(()=>`instance-${h.value}`),{r$:D}=r(l,u,v);O(),St(P),vue.watch(m,(a,w)=>{P(w),O();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=D);}return {r$:D,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
|
|
2
|
-
exports.InternalRuleType=
|
|
1
|
+
'use strict';var vue=require('vue');function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var pt=Symbol("regle-rule");function Lt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function G(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>G(n)))),r=="Map"&&(t=new Map([...e].map(n=>[G(n[0]),G(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=G(e[n]);}return t}function ae(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function We(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Fe(e,t,r){let n,l=(...c)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...c])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function mt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function gt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function vt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Be(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...$){return e.validator(d,...te($.length?$:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:te(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:te(d?.$params?.length?d.$params:t)}):e.active??true},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:te(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let $=e.validator(d,...te(t)),m;return $ instanceof Promise?$.then(b=>(m=b,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:gt(t),_brand:pt}}function He(e){if(typeof e.validator=="function"){let r=Be(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...c){return Be(e,...c)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function ze(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),c=vue.shallowRef(new Map);function p(v){let E=t.value.get(v);if(E)return E;{let D=vue.ref({});return t.value.set(v,D),D}}function d(v){let E=r.value.get(v);if(E)return E;{let D=vue.ref([]);return r.value.set(v,D),D}}function $(v,E,D){c.value.set(`${v}-${E}`,D);}function m(v,E){return c.value.get(`${v}-${E}`)}function b(v,E){v&&E!=null&&c.value.delete(`${v}-${E}`);}function V(v,E){n.value.set(v,E);}function C(v){return n.value.get(v)??false}function M(v,E){e.value.set(v,E);}function w(v,E){let D=e.value.get(v);return D?a(E,D)?{valid:true}:{valid:false}:undefined}function a(v,E){let D=Object.keys(E),f=Object.keys(v);return f.length!==D.length||!f.every(o=>D.includes(o))?false:f.every(o=>{let s=v[o],h=E[o];return !h||!s||typeof s=="function"||typeof h=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((P,q)=>{if(typeof h=="number"||typeof h=="boolean")return true;{let U=te(h._params),X=te(s._params);return U?.[q]===X?.[q]}}):true})}function O(v){let E=l.value.get(v);if(E)return E;{let D=vue.ref(false),f=vue.ref(true),S=vue.ref({}),o=vue.ref(false);return l.value.set(v,{$pending:D,$valid:f,$metadata:S,$validating:o}),{$pending:D,$valid:f,$metadata:S,$validating:o}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),c.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:O,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:b,arrayStatusStorage:c}}function je(e){return ae(e.value)}function qe(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Xt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let c=Number(r[l]),p=Number(n[l]);if(c>p)return 1;if(p>c)return -1;if(!isNaN(c)&&isNaN(p))return 1;if(isNaN(c)&&!isNaN(p))return -1}return 0}var Ve=Xt(vue.version,"3.5.0")!==-1;function Zt(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Zt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function $t(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function St(e){let t=false,r,n=vue.effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function ht(e,t){return je(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Oe(e){return typeof e.value!="function"}function Tt(e){return ae(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ke({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Dt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:c,$debounce:p,modifiers:d}){let $=vue.effectScope(),m={},b,V=vue.ref(false),{$pending:C,$valid:M,$metadata:w,$validating:a}=c.trySetRuleStatusRef(`${l}.${r}`);function O(){$=vue.effectScope(),m=$.run(()=>{let s=vue.ref(false),h=vue.ref(false),P=vue.ref(true),q=vue.ref(false),U=vue.ref(false),X=vue.computed(()=>({$value:n.value,$error:h.value,$dirty:s.value,$pending:q.value,$correct:U.value,$invalid:P.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:C.value},$params:i.value,...w.value})),I=vue.computed(()=>Oe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function B(T){let F="",H=e?e[r]?.[T]:undefined;if(H&&(typeof H=="function"?F=H(X.value):F=H),Oe(t)){let y=`_${T}_patched`;H&&!t.value[y]||(typeof t.value[T]=="function"?F=t.value[T](X.value):F=t.value[T]??"");}return F}let de=vue.computed(()=>{let T=B("message");return ee(T)&&(T="This field is not valid"),T}),ye=vue.computed(()=>B("tooltip")),ie=vue.computed(()=>Oe(t)&&t.value.type?t.value.type:r),u=vue.computed(()=>Oe(t)?t.value.validator:t.value),i=vue.computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),R=vue.computed(()=>`${l}.${ie.value}`);return {$active:I,$message:de,$type:ie,$validator:u,$params:i,$path:R,$tooltip:ye,$fieldCorrect:U,$fieldError:h,$fieldDirty:s,$fieldPending:q,$fieldInvalid:P}}),b=vue.watch(m?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&m.$fieldError.value)&&f();});}O();function v(){M.value=true,m.$fieldDirty.value&&(C.value=true);}async function E(){let s=false;try{let h=m.$validator.value;if(typeof h!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let P=h(n.value,...m.$params.value),q=n.value;v();let U;if(P instanceof Promise?U=await P:U=P,n.value!==q)return !0;if(typeof U=="boolean")s=U;else {let{$valid:X,...I}=U;s=X,w.value=I;}}catch{s=false;}finally{C.value=false;}return s}let D=Fe(E,p??200);async function f(){try{a.value=!0;let s=!1;if(we(t.value)&&t.value._async)s=await D();else {let h=m.$validator.value,P=h(n.value,...m.$params.value);if(P 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(P!=null)if(typeof P=="boolean")s=P;else {let{$valid:q,...U}=P;s=q,w.value=U;}}return M.value=s,s}catch{return false}finally{a.value=false;}}function S(){M.value=true,w.value={},C.value=false,a.value=false,O();}function o(){b(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:C,$valid:M,$metadata:w,$haveAsync:V,$validating:a,$validate:f,$unwatch:o,$watch:O,$reset:S})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:c,options:p,externalErrors:d,schemaErrors:$,schemaMode:m,onUnwatch:b,$isArray:V,initialState:C,shortcuts:M}){let w=vue.effectScope(),a,O=[],v,E,D,f,S,o=()=>{};function s(){let g=t.value,k=c.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([A])=>A.startsWith("$"))),q(),I.value=Object.fromEntries(Object.entries(t.value).filter(([A])=>!A.startsWith("$")).map(([A,x])=>{if(x){let ue=vue.toRef(()=>x);return [A,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:A,state:e,path:n,storage:c,$debounce:B.value.$debounce})]}return []}).filter(A=>!!A.length)),a.processShortcuts(),h(),k?.valid!=null&&(a.$dirty.value=c.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),c.addRuleDeclEntry(n,g);}function h(){o=a.$debounce.value?Fe(X,a.$debounce.value??a.$haveAnyAsyncRule?100:0):X;}function P(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$unwatch();}),D(),S?.(),a.$dirty.value&&c.setDirtyEntry(n,a.$dirty.value),v?.(),E?.(),w.stop(),w=vue.effectScope(),O.forEach(g=>g.stop()),O=[],b?.(),f?.();}function q(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$watch();}),a=w.run(()=>{let g=vue.ref(false),k=vue.ref(false),A=vue.computed(()=>g.value),x=vue.computed(()=>B.value.$debounce),ue=vue.computed(()=>B.value.$lazy!=null?B.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):false),le=vue.computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:vue.unref(p.rewardEarly)!=null?vue.unref(p.rewardEarly):false),pe=vue.computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:vue.unref(p.clearExternalErrorsOnChange)!=null?vue.unref(p.clearExternalErrorsOnChange):true),W=vue.computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!le.value),j=vue.computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$validating)),z=vue.computed({get:()=>e.value,set(oe){v(),e.value=oe,U();}}),me=vue.computed(()=>ge.value&&!Ie.value&&g.value),at=vue.computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value}})),lt=vue.computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value},silent:true})),Ue=vue.computed(()=>g.value?C.value instanceof Date&&e.value instanceof Date?We(C.value).getDate()!==We(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),ot=vue.computed(()=>Ue.value),st=vue.computed(()=>Dt({field:{$rules:I.value}})),ut=vue.computed(()=>W.value?A.value&&!(ge.value||Ie.value):!(ge.value||Ie.value)),Ie=vue.computed(()=>k.value||!le.value?Object.entries(I.value).some(([oe,Q])=>Q.$pending):false),ge=vue.computed(()=>d?.value?.length||$?.value?.length?true:Me.value?false:!le.value||le.value&&k.value?Object.entries(I.value).some(([oe,Q])=>!Q.$valid):false),it=vue.computed(()=>l),Me=vue.computed(()=>!!(ee(I.value)&&!m)),ct=vue.computed(()=>d?.value?.length||Me.value?false:g.value&&!ee(e.value)&&!j.value?m?!$?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),Ut=vue.computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$haveAsync));function Wt(){M?.fields&&Object.entries(M.fields).forEach(([oe,Q])=>{let Rt=vue.effectScope();ft[oe]=Rt.run(()=>{let dt=vue.ref();return vue.watchEffect(()=>{dt.value=Q(vue.reactive({$dirty:g,$externalErrors:d?.value??[],$value:e,$silentValue:z,$rules:I,$error:me,$pending:Ie,$invalid:ge,$correct:ct,$errors:at,$ready:ut,$silentErrors:lt,$anyDirty:A,$tooltips:st,$name:it,$inactive:Me,$edited:Ue,$anyEdited:ot}));}),dt}),O.push(Rt);});}let ft={};return vue.watch(ge,oe=>{oe||(k.value=false);}),{$error:me,$pending:Ie,$invalid:ge,$correct:ct,$debounce:x,$lazy:ue,$errors:at,$ready:ut,$silentErrors:lt,$rewardEarly:le,$autoDirty:W,$clearExternalErrorsOnChange:pe,$anyDirty:A,$edited:Ue,$anyEdited:ot,$name:it,$haveAnyAsyncRule:Ut,$shortcuts:ft,$validating:j,$tooltips:st,$dirty:g,triggerPunishment:k,processShortcuts:Wt,$silentValue:z,$inactive:Me}}),U(),D=vue.watch(a.$dirty,g=>{c.setDirtyEntry(n,g),Object.values(I.value).forEach(k=>{k.$fieldDirty=g;});}),S=vue.watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldCorrect=a.$correct.value;});}),E=vue.watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),f=vue.watch(a.$haveAnyAsyncRule,h);}function U(){v=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&s(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&i();},{deep:V?true:Ve?1:true,flush:"post"});}function X(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=vue.ref({}),B=vue.ref({});s();function de(g,k){if(i(),a.$dirty.value=false,a.triggerPunishment.value=false,c.setDirtyEntry(n,false),!k)if(g?.toInitialState)P(),e.value=G(C);else if(g?.toState){P();let A;typeof g?.toState=="function"?A=g?.toState():A=g?.toState,C.value=G(A),e.value=G(A);}else C.value=ae(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;k||Object.entries(I.value).forEach(([A,x])=>{x.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(A=>A.$validate()),k||s();}function ye(g=true,k=false){a.$dirty.value||(a.$dirty.value=true),k&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o():g&&o();}async function ie(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return m?{result:!$?.value?.length,data:g}:ee(I.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function u(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function i(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:R,$validating:T,$autoDirty:F,$rewardEarly:H,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:_,$debounce:K,$lazy:Z,triggerPunishment:J,...se}=a;return vue.reactive({...se,$externalErrors:d,$value:e,$rules:I,...R,$reset:de,$touch:ye,$validate:ie,$unwatch:P,$watch:q,$extractDirtyFields:u,$clearExternalErrors:i})}function Qe({$id:e,path:t,index:r,options:n,storage:l,stateValue:c,customMessages:p,rules:d,externalErrors:$,schemaErrors:m,initialState:b,shortcuts:V,fieldName:C,schemaMode:M}){let w=d.$key?d.$key:Se(),a=`${t}.${String(w)}`;typeof c.value=="object"&&c.value!=null&&(c.value.$id?a=`${t}.${c.value.$id}`:Object.defineProperties(c.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let O=vue.toRef($?.value??[],r),v=vue.computed(()=>m?.value?.[r]),E=Ee({state:c,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:O,schemaErrors:v,initialState:b,shortcuts:V,fieldName:C,schemaMode:M});if(E){let D=c.value?.$id;E.$id=D??String(w),l.addArrayStatus(e,E.$id,E);}return E}function Pt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:p,schemaErrors:d,schemaMode:$,initialState:m,shortcuts:b,fieldName:V}){let C=vue.effectScope(),M,w=vue.effectScope(),a,O=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=vue.ref(),E=vue.ref(e.value),D,f=vue.ref({}),S=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(i=>typeof i!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(i=>we(i)||typeof i=="function"):false)})),o(),P();function o(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=Se(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),E.value=f.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(u=>typeof u=="object").map((u,i)=>{let{scope:R,unwrapped:T}=qe(t.value.$each,vue.toRef(()=>u),i);R&&O.push(R);let F=vue.toRef(m.value??[],i),H=vue.toRef(p?.value??{},"$each"),y=vue.computed(()=>d?.value?.$each),_=Qe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>u),index:i,options:c,storage:l,externalErrors:H,schemaErrors:y,initialState:F,shortcuts:b,fieldName:V,schemaMode:$});return _||null}).filter(u=>!!u):S.value=[],f.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:vue.toRef(p?.value??{},"$self"),schemaErrors:vue.computed(()=>d?.value?.$self),$isArray:true,initialState:m,shortcuts:b,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let u=G(S.value);S.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let T=vue.toRef(()=>i);if(i.$id&&S.value.find(F=>F.$id===i.$id)){let F=l.getArrayStatus(v.value,i.$id);return F?(F.$value=T,F):null}else {let{scope:F,unwrapped:H}=qe(t.value.$each,T,R);F&&O.push(F);let y=vue.toRef(p?.value??{},"$each"),_=vue.computed(()=>d?.value?.$each??[]),K=Qe({$id:v.value,path:n,customMessages:r,rules:H??{},stateValue:T,index:R,options:c,storage:l,externalErrors:y,schemaErrors:_,initialState:vue.toRef(m.value??[],R),shortcuts:b,fieldName:V,schemaMode:$});return K||null}}).filter(i=>!!i),u.filter(i=>!e.value?.find(R=>i.$id===R.$id)).forEach((i,R)=>{l.deleteArrayStatus(v.value,R.toString());});}else S.value=[];}function h(){D=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?o():s();},{deep:Ve?1:true,flush:"pre"});}function P(){h(),C=vue.effectScope(),M=C.run(()=>{let u=vue.computed({get:()=>e.value,set(x){D(),e.value=x,h();}}),i=vue.computed(()=>f.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),R=vue.computed(()=>f.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=vue.computed(()=>f.value.$invalid||S.value.some(x=>x.$invalid)),F=vue.computed(()=>(ee(f.value.$rules)?true:f.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),H=vue.computed(()=>f.value.$error||S.value.some(x=>x.$error)),y=vue.computed(()=>!(T.value||_.value)),_=vue.computed(()=>f.value.$pending||S.value.some(x=>x.$pending)),K=vue.computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=vue.computed(()=>f.value.$anyEdited||S.value.some(x=>x.$anyEdited)),J=vue.computed(()=>({$self:f.value.$errors,$each:S.value.map(x=>x.$errors)})),se=vue.computed(()=>({$self:f.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>V);function k(){b?.collections&&Object.entries(b?.collections).forEach(([x,ue])=>{let le=vue.effectScope();A[x]=le.run(()=>{let pe=vue.ref();return vue.watchEffect(()=>{pe.value=ue(vue.reactive({$dirty:i,$error:H,$silentValue:u,$pending:_,$invalid:T,$correct:F,$errors:J,$ready:y,$silentErrors:se,$anyDirty:R,$name:g,$each:S,$self:f,$value:e,$edited:K,$anyEdited:Z}));}),pe}),O.push(le);});}let A={};return k(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:_,$errors:J,$silentErrors:se,$ready:y,$name:g,$shortcuts:A,$silentValue:u,$edited:K,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function q(){D&&D(),f.value&&f.value.$unwatch(),S.value&&S.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),C.stop(),C=vue.effectScope(),w.stop(),w=vue.effectScope(true),O.forEach(u=>u.stop()),O=[];}function U(u=true,i=false){f.value.$touch(u,i),S.value.forEach(R=>{R.$touch(u,i);});}function X(u,i){if(q(),!i)if(u?.toInitialState)e.value=G(m.value);else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,m.value=G(R),e.value=G(R);}else m.value=G(e.value);f.value.$reset(),S.value.forEach(R=>{R.$reset(u,true);}),i||o();}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([f.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}catch{return {result:false,data:u}}}function B(){f.value.$clearExternalErrors(),S.value.forEach(u=>{u.$clearExternalErrors();});}function de(u=true){let i=S.value.map(R=>{if(Tt(R))return R.$extractDirtyFields(u)});return u&&i.every(R=>ee(R))&&(i=[]),i}let{$shortcuts:ye,...ie}=M;return vue.reactive({$self:f,...ie,...ye,$each:S,$value:e,$validate:I,$unwatch:q,$watch:P,$touch:U,$reset:X,$extractDirtyFields:de,$clearExternalErrors:B})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:c,rootSchemaErrors:p,validationGroups:d,initialState:$,fieldName:m,...b}){let V=vue.effectScope(),C,M=[],w=null,a=null,O=null,v=null;async function D(u=true){let i=Object.entries(e.value),R=Object.fromEntries(i.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=vue.toRef(t.value??{},y),Z=vue.toRef(()=>_),J=vue.toRef(l?.value??{},y),se=vue.computed(()=>c?.value?.[y]),g=vue.toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:J,schemaErrors:se,initialState:g,fieldName:y,...b})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),F=Object.fromEntries(Object.entries(vue.unref(c)??{}).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(F??{}))).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]}));f.value={...R,...T,...F,...H},u&&s();}let f=b.storage.getFieldsEntry(r);D();function S(){l&&(O=vue.watch(l,()=>{h(),D();},{deep:true}));}function o(){v=vue.watch(t,()=>{h(),D(),U(true,true);},{flush:"sync"});}function s(){n&&(w?.(),w=vue.watch(n,()=>{h(),D();},{deep:true,flush:"post"}),S()),p&&(a?.(),a=vue.watch(p,()=>{h(),D();},{deep:true,flush:"post"})),o(),C=V.run(()=>{let u=vue.computed({get:()=>t.value,set(W){h(),t.value=W,D();}}),i=vue.computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$dirty)),R=vue.computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyDirty)),T=vue.computed(()=>Object.entries(f.value).some(([W,j])=>j?.$invalid)),F=vue.computed(()=>{let W=Object.entries(f.value).filter(([j,z])=>xt(z)?!z.$inactive:true);return W.length?W.every(([j,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=vue.computed(()=>R.value&&!J.value&&T.value),y=vue.computed(()=>vue.unref(b.options.rewardEarly)!=null?vue.unref(b.options.rewardEarly):false),_=vue.computed(()=>vue.unref(b.options.autoDirty)!=null?vue.unref(b.options.autoDirty):!y.value),K=vue.computed(()=>_.value?R.value&&!(T.value||J.value):!(T.value||J.value)),Z=vue.ref(false),J=vue.computed(()=>Z.value||Object.entries(f.value).some(([W,j])=>j?.$pending)),se=vue.computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$silentErrors]))),k=vue.computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$edited)),A=vue.computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyEdited)),x=vue.computed(()=>m);function ue(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([W,j])=>{let z=vue.effectScope();pe[W]=z.run(()=>{let me=vue.ref();return vue.watchEffect(()=>{me.value=j(vue.reactive({$dirty:i,$value:t,$silentValue:u,$error:H,$pending:J,$invalid:T,$correct:F,$ready:K,$anyDirty:R,$name:x,$silentErrors:g,$errors:se,$fields:f,$edited:k,$anyEdited:A}));}),me}),M.push(z);});}let le=vue.computed({get:()=>d?Object.fromEntries(Object.entries(d?.(f.value)??{}).map(([W,j])=>j.length?[W,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,mt(j,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,yt(j,z)]))}]:[])):{},set(){}}),pe={};return ue(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:J,$errors:se,$silentErrors:g,$ready:K,$name:x,$shortcuts:pe,$groups:le,$silentValue:u,$edited:k,$anyEdited:A,$localPending:Z}});}function h(){w?.(),O?.(),v?.(),a?.(),M=[],C={},f.value&&Object.entries(f.value).forEach(([u,i])=>{i.$unwatch();});}function P(){Object.entries(f.value).forEach(([u,i])=>{i.$clearExternalErrors();});}function q(u,i){if(O?.(),h(),!i)if(u?.toInitialState)t.value=G({...$.value??{}});else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,$.value=G(R),t.value=G(R);}else $.value=G(t.value);Object.values(f.value).forEach(R=>{R.$reset(u,true);}),S(),i||D();}function U(u=true,i=false){Object.values(f.value).forEach(R=>{R.$touch(u,i);});}function X(u){return u.filter(([i,R])=>ae(R)?!(R&&typeof R=="object"&&"_null"in R)&&!ee(R):Array.isArray(R)?R.length:true)}function I(u=true){let i=Object.entries(f.value).map(([R,T])=>[R,T.$extractDirtyFields(u)]);return u&&(i=X(i)),Object.fromEntries(i)}async function B(){try{if(b.schemaMode)return b.onValidate?(U(!1),C.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let u=t.value;return {result:(await Promise.allSettled(Object.values(f.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}}catch{return {result:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:de,$localPending:ye,...ie}=C;return vue.reactive({...ie,...de,$fields:f,$value:t,$reset:q,$touch:U,$validate:B,$unwatch:h,$watch:s,$clearExternalErrors:P,$extractDirtyFields:I})}function Ee({rulesDef:e,...t}){if(bt(e,t.state))return Pt({rulesDef:e,...t});if(ht(t.state,e)){if(je(t.state))return Ne({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let p=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,d=>{p.value=d;},{deep:true}),vue.watch(p,d=>{t.state.value=d;},{deep:true}),{fakeState:p}}),{state:l,...c}=t;return Ne({rulesDef:e,...c,state:n.fakeState})}}else if(Et(e))return _e({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:c,schemaErrors:p,schemaMode:d=false,onValidate:$}){let m=ze(),b=vue.ref();return b.value=Ne({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaErrors:p,rootSchemaErrors:p,schemaMode:d,onValidate:$}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{b.value?.$unwatch();}),vue.reactive({regle:b})}function et(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(c,p,d){let $=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),m={...n,...d},b=vue.isRef(c)?c:vue.ref(c),V=vue.ref({...G(b.value)});return {r$:Ce({scopeRules:$,state:b,options:m,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var Ge=et();function tt(){function e(t,r){return r}return e}var rt=tt();function jt({rules:e,modifiers:t,shortcuts:r}){let n=et(e,t,r),l=tt();return {useRegle:n,inferRules:l}}function Ae(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,h])=>e[s].$value=h);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,h])=>e[s].$silentValue=h);}}),c=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$dirty)}),p=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),d=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$correct||h.$anyDirty&&!h.$invalid)}),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$ready)}),V=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),C=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),M=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),O=vue.computed(()=>r?Object.values(e):e);function v(o){Object.values(e).forEach(s=>{s.$reset(o);});}function E(){Object.values(e).forEach(o=>{o.$touch();});}function D(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function f(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function S(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(P=>P.$validate()))).every(P=>P.status==="fulfilled"?P.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:M,$instances:O,$value:n,$dirty:c,$anyDirty:p,$invalid:d,$correct:$,$error:m,$pending:V,$ready:b,$edited:w,$anyEdited:a,$reset:v,$touch:E,$validate:S,$extractDirtyFields:D,$clearExternalErrors:f})}function _t(e){function t(r){let n=vue.computed(()=>vue.toValue(r));p();let l=vue.ref(d(e.value)),c=vue.reactive({r$:l});function p(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,p),vue.watch(e,$=>{l.value=d($);},{deep:true});function d($){if(n.value){let m=$[n.value]??{};return Ae(m,true)}else return Ae($["~~global"]??{},true)}return {r$:c.r$}}return {useCollectScope:t}}function Gt(e,t){let r=t??Ge;return {useScopedRegle:(l,c,p)=>{let{namespace:d,...$}=p??{},m=vue.computed(()=>vue.toValue(d)),b=vue.ref(`${Object.keys(e.value).length+1}-${Se()}`),V=vue.computed(()=>`instance-${b.value}`),{r$:C}=r(l,c,$);w(),$t(M),vue.watch(m,(a,O)=>{M(O),w();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&M();});function M(a){let O=a??m.value;O?e.value[O]&&delete e.value[O][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:M,register:w}}}}function nt(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):St(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Gt(r,e?.customUseRegle),{useCollectScope:l}=_t(r);return {useScopedRegle:n,useCollectScope:l}}
|
|
2
|
+
exports.InternalRuleType=Le;exports.createRule=He;exports.createScopedUseRegle=nt;exports.defineRegleConfig=jt;exports.inferRules=rt;exports.mergeRegles=Ae;exports.unwrapRuleParameters=te;exports.useRegle=Ge;exports.useRootStorage=Ce;
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,watch,getCurrentInstance,onMounted,isRef,toRef,unref,watchEffect}from'vue';function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Bt(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Bt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ae(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Be=(r=>(r.Inline="__inline",r.Async="__async",r))(Be||{});function yt(e,t){return e.some(r=>r[t])}function gt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>toValue(t))}catch{return []}}function $t(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function vt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...v){return e.validator(c,...te(v.length?v:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:te(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:te(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:te(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let v=e.validator(c,...te(t)),m;return v instanceof Promise?v.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=v,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:$t(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...u){return He(e,...u)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),u=shallowRef(new Map);function R($){let b=t.value.get($);if(b)return b;{let E=ref({});return t.value.set($,E),E}}function c($){let b=r.value.get($);if(b)return b;{let E=ref([]);return r.value.set($,E),E}}function v($,b,E){u.value.set(`${$}-${b}`,E);}function m($,b){return u.value.get(`${$}-${b}`)}function h($,b){$&&b!=null&&u.value.delete(`${$}-${b}`);}function F($,b){n.value.set($,b);}function D($){return n.value.get($)??false}function P($,b){e.value.set($,b);}function O($,b){let E=e.value.get($);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a($,b){let E=Object.keys(b),i=Object.keys($);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=$[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=te(s._params),J=te(o._params);return k?.[_]===J?.[_]}}):true})}function w($){let b=l.value.get($);if(b)return b;{let E=ref(false),i=ref(true),S=ref({}),V=ref(false);return l.value.set($,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:D,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:v,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ae(e.value)}function Ke(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return getCurrentScope()?(onScopeDispose(e),true):false}function ht(e){let t=false,r,n=effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ae(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let v=effectScope(),m={},h,F=ref(false),{$pending:D,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){v=effectScope(),m=v.run(()=>{let o=ref(false),s=ref(false),C=ref(true),_=ref(false),k=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$correct:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:D.value},$params:d.value,...O.value})),I=computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function B(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let X=`_${p}_patched`;A&&!t.value[X]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=computed(()=>{let p=B("message");return ee(p)&&(p="This field is not valid"),p}),de=computed(()=>B("tooltip")),pe=computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=computed(()=>Pe(t)?t.value.validator:t.value),d=computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),f=computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldCorrect:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function $(){P.value=true,m.$fieldDirty.value&&(D.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;$();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{D.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},D.value=false,a.value=false,w();}function V(){h(),v.stop(),v=effectScope();}return reactive({...m,$pending:D,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:v,schemaMode:m,onUnwatch:h,$isArray:F,initialState:D,shortcuts:P}){let O=effectScope(),a,w=[],$,b,E,i,S,V=()=>{};function o(){let g=t.value,G=u.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([L])=>L.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([L])=>!L.startsWith("$")).map(([L,x])=>{if(x){let ue=toRef(()=>x);return [L,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:L,state:e,path:n,storage:u,$debounce:B.value.$debounce})]}return []}).filter(L=>!!L.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,g);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),$?.(),b?.(),O.stop(),O=effectScope(),w.forEach(g=>g.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$watch();}),a=O.run(()=>{let g=ref(false),G=ref(false),L=computed(()=>g.value),x=computed(()=>B.value.$debounce),ue=computed(()=>B.value.$lazy!=null?B.value.$lazy:unref(R.lazy)!=null?unref(R.lazy):false),le=computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:unref(R.rewardEarly)!=null?unref(R.rewardEarly):false),ye=computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:unref(R.clearExternalErrorsOnChange)!=null?unref(R.clearExternalErrorsOnChange):true),U=computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:unref(R.autoDirty)!=null?unref(R.autoDirty):!le.value),M=computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$validating)),H=computed({get:()=>e.value,set(oe){$(),e.value=oe,k();}}),ge=computed(()=>$e.value&&!Oe.value&&g.value),lt=computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value}})),ot=computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value},silent:true})),We=computed(()=>g.value?D.value instanceof Date&&e.value instanceof Date?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),st=computed(()=>We.value),ut=computed(()=>Ct({field:{$rules:I.value}})),it=computed(()=>U.value?L.value&&!($e.value||Oe.value):!($e.value||Oe.value)),Oe=computed(()=>G.value||!le.value?Object.entries(I.value).some(([oe,Y])=>Y.$pending):false),$e=computed(()=>c?.value?.length||v?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([oe,Y])=>!Y.$valid):false),ct=computed(()=>l),Fe=computed(()=>!!(ee(I.value)&&!m)),ft=computed(()=>c?.value?.length||Fe.value?false:g.value&&!ee(e.value)&&!M.value?m?!v?.value?.length:Object.values(I.value).some(Y=>Y.$active)?Object.values(I.value).filter(Y=>Y.$active).every(Y=>Y.$valid):false:false),Wt=computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$haveAsync));function Lt(){P?.fields&&Object.entries(P.fields).forEach(([oe,Y])=>{let dt=effectScope();Rt[oe]=dt.run(()=>{let pt=ref();return watchEffect(()=>{pt.value=Y(reactive({$dirty:g,$externalErrors:c?.value??[],$value:e,$silentValue:H,$rules:I,$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:L,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return watch($e,oe=>{oe||(G.value=false);}),{$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$debounce:x,$lazy:ue,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ye,$anyDirty:L,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:g,triggerPunishment:G,processShortcuts:Lt,$silentValue:H,$inactive:Fe}}),k(),E=watch(a.$dirty,g=>{u.setDirtyEntry(n,g),Object.values(I.value).forEach(G=>{G.$fieldDirty=g;});}),S=watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldCorrect=a.$correct.value;});}),b=watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),i=watch(a.$haveAnyAsyncRule,s);}function k(){$=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=ref({}),B=ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),D.value=ae(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([g,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(g=>g.$validate());}function de(g=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():g&&V();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return m?{result:!v?.value?.length,data:g}:ee(I.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Q(D),ie();}function d(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:X,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:j,$debounce:z,$lazy:Z,triggerPunishment:q,...se}=a;return reactive({...se,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:v,schemaErrors:m,initialState:h,shortcuts:F,fieldName:D,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=toRef(v?.value??[],r),$=computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:$,initialState:h,shortcuts:F,fieldName:D,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:v,initialState:m,shortcuts:h,fieldName:F}){let D=effectScope(),P,O=effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),b=ref(e.value),E,i=ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,toRef(()=>d),f);p&&w.push(p);let A=toRef(m.value??[],f),X=toRef(R?.value??{},"$each"),y=computed(()=>c?.value?.$each),j=Xe({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>d),index:f,options:u,storage:l,externalErrors:X,schemaErrors:y,initialState:A,shortcuts:h,fieldName:F,schemaMode:v});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:toRef(R?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:v});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Q(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus($.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:X}=Ke(t.value.$each,T,p);A&&w.push(A);let y=toRef(R?.value??{},"$each"),j=computed(()=>c?.value?.$each??[]),z=Xe({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:p,options:u,storage:l,externalErrors:y,schemaErrors:j,initialState:toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:v});return z||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus($.value,p.toString());});}else S.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),D=effectScope(),P=D.run(()=>{let d=computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),f=computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),p=computed(()=>i.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=computed(()=>i.value.$invalid||S.value.some(x=>x.$invalid)),A=computed(()=>(ee(i.value.$rules)?true:i.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),X=computed(()=>i.value.$error||S.value.some(x=>x.$error)),y=computed(()=>!(T.value||j.value)),j=computed(()=>i.value.$pending||S.value.some(x=>x.$pending)),z=computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=computed(()=>i.value.$anyEdited||S.value.some(x=>x.$anyEdited)),q=computed(()=>({$self:i.value.$errors,$each:S.value.map(x=>x.$errors)})),se=computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([x,ue])=>{let le=effectScope();L[x]=le.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=ue(reactive({$dirty:f,$error:X,$silentValue:d,$pending:j,$invalid:T,$correct:A,$errors:q,$ready:y,$silentErrors:se,$anyDirty:p,$name:g,$each:S,$self:i,$value:e,$edited:z,$anyEdited:Z}));}),ye}),w.push(le);});}let L={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:j,$errors:q,$silentErrors:se,$ready:y,$name:g,$shortcuts:L,$silentValue:d,$edited:z,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),D.stop(),D=effectScope(),O.stop(),O=effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function B(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>ee(p))&&(f=[]),f}function de(){_(),e.value=Q(m.value),J();}let{$shortcuts:pe,...me}=P;return reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:B})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:v,fieldName:m,...h}){let F=effectScope(),D,P=[],O=null,a=null,w=null,$=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([y,j])=>!!j).map(([y,j])=>{if(j){let z=toRef(t.value??{},y),Z=toRef(()=>j),q=toRef(l?.value??{},y),se=computed(()=>u?.value?.[y]),g=toRef(v?.value??{},y);return [y,Te({state:z,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:se,initialState:g,fieldName:y,...h})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([y,j])=>!(y in e.value)&&!!j).map(([y])=>{let j=toRef(t.value??{},y),z=toRef(l?.value??{},y),Z=computed(()=>u?.value?.[y]),q=toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),A=Object.fromEntries(Object.entries(unref(u)??{}).map(([y])=>{let j=toRef(t.value??{},y),z=toRef(l?.value??{},y),Z=computed(()=>u?.value?.[y]),q=toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(A??{}))).map(([y])=>{let j=toRef(t.value??{},y),z=toRef(l?.value??{},y),Z=computed(()=>u?.value?.[y]),q=toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]}));i.value={...p,...T,...A,...X},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=watch(l,()=>{s(),E();},{deep:true}));}function V(){$=watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),D=F.run(()=>{let d=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=computed(()=>{let U=Object.entries(i.value).filter(([M,H])=>Dt(H)?!H.$inactive:true);return U.length?U.every(([M,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),X=computed(()=>p.value&&!q.value&&T.value),y=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!y.value),z=computed(()=>j.value?p.value&&!(T.value||q.value):!(T.value||q.value)),Z=ref(false),q=computed(()=>Z.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),se=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),L=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),x=computed(()=>m);function ue(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let H=effectScope();ye[U]=H.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=M(reactive({$dirty:f,$value:t,$silentValue:d,$error:X,$pending:q,$invalid:T,$correct:A,$ready:z,$anyDirty:p,$name:x,$silentErrors:g,$errors:se,$fields:i,$edited:G,$anyEdited:L}));}),ge}),P.push(H);});}let le=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,yt(M,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,gt(M,H)]))}]:[])):{},set(){}}),ye={};return ue(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:q,$errors:se,$silentErrors:g,$ready:z,$name:x,$shortcuts:ye,$groups:le,$silentValue:d,$edited:G,$anyEdited:L,$localPending:Z}});}function s(){O?.(),w?.(),$?.(),a?.(),P=[],D={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),v.value={...Q(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Q({...v.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ae(p)?!(p&&typeof p=="object"&&"_null"in p)&&!ee(p):Array.isArray(p)?p.length:true)}function B(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),D.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:B})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=effectScope().run(()=>{let R=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:v}){let m=qe(),h=ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:v}),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let v=isRef(R)?R:computed(typeof R=="function"?R:()=>R),m={...n,...c},h=isRef(u)?u:ref(u),F=ref({...Q(h.value)});return {r$:Ie({scopeRules:v,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),v=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$correct||C.$anyDirty&&!C.$invalid)}),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=computed(()=>r?Object.values(e):e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:D,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$correct:v,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:$,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=computed(()=>toValue(r));R();let l=ref(c(e.value)),u=reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,R),watch(e,v=>{l.value=c(v);},{deep:true});function c(v){if(n.value){let m=v[n.value]??{};return Me(m,true)}else return Me(v["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...v}=R??{},m=computed(()=>toValue(c)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),F=computed(()=>`instance-${h.value}`),{r$:D}=r(l,u,v);O(),St(P),watch(m,(a,w)=>{P(w),O();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=D);}return {r$:D,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
|
|
2
|
-
export{
|
|
1
|
+
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,watch,getCurrentInstance,onMounted,isRef,toRef,unref,watchEffect}from'vue';function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var pt=Symbol("regle-rule");function Lt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function G(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>G(n)))),r=="Map"&&(t=new Map([...e].map(n=>[G(n[0]),G(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=G(e[n]);}return t}function ae(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function We(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Fe(e,t,r){let n,l=(...c)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...c])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function mt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>toValue(t))}catch{return []}}function gt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function vt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Be(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...$){return e.validator(d,...te($.length?$:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:te(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:te(d?.$params?.length?d.$params:t)}):e.active??true},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:te(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let $=e.validator(d,...te(t)),m;return $ instanceof Promise?$.then(b=>(m=b,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:gt(t),_brand:pt}}function He(e){if(typeof e.validator=="function"){let r=Be(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...c){return Be(e,...c)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function ze(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),c=shallowRef(new Map);function p(v){let E=t.value.get(v);if(E)return E;{let D=ref({});return t.value.set(v,D),D}}function d(v){let E=r.value.get(v);if(E)return E;{let D=ref([]);return r.value.set(v,D),D}}function $(v,E,D){c.value.set(`${v}-${E}`,D);}function m(v,E){return c.value.get(`${v}-${E}`)}function b(v,E){v&&E!=null&&c.value.delete(`${v}-${E}`);}function V(v,E){n.value.set(v,E);}function C(v){return n.value.get(v)??false}function M(v,E){e.value.set(v,E);}function w(v,E){let D=e.value.get(v);return D?a(E,D)?{valid:true}:{valid:false}:undefined}function a(v,E){let D=Object.keys(E),f=Object.keys(v);return f.length!==D.length||!f.every(o=>D.includes(o))?false:f.every(o=>{let s=v[o],h=E[o];return !h||!s||typeof s=="function"||typeof h=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((P,q)=>{if(typeof h=="number"||typeof h=="boolean")return true;{let U=te(h._params),X=te(s._params);return U?.[q]===X?.[q]}}):true})}function O(v){let E=l.value.get(v);if(E)return E;{let D=ref(false),f=ref(true),S=ref({}),o=ref(false);return l.value.set(v,{$pending:D,$valid:f,$metadata:S,$validating:o}),{$pending:D,$valid:f,$metadata:S,$validating:o}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),c.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:O,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:b,arrayStatusStorage:c}}function je(e){return ae(e.value)}function qe(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Xt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let c=Number(r[l]),p=Number(n[l]);if(c>p)return 1;if(p>c)return -1;if(!isNaN(c)&&isNaN(p))return 1;if(isNaN(c)&&!isNaN(p))return -1}return 0}var Ve=Xt(version,"3.5.0")!==-1;function Zt(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Zt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function $t(e){return getCurrentScope()?(onScopeDispose(e),true):false}function St(e){let t=false,r,n=effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function ht(e,t){return je(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Oe(e){return typeof e.value!="function"}function Tt(e){return ae(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ke({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Dt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:c,$debounce:p,modifiers:d}){let $=effectScope(),m={},b,V=ref(false),{$pending:C,$valid:M,$metadata:w,$validating:a}=c.trySetRuleStatusRef(`${l}.${r}`);function O(){$=effectScope(),m=$.run(()=>{let s=ref(false),h=ref(false),P=ref(true),q=ref(false),U=ref(false),X=computed(()=>({$value:n.value,$error:h.value,$dirty:s.value,$pending:q.value,$correct:U.value,$invalid:P.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:C.value},$params:i.value,...w.value})),I=computed(()=>Oe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function B(T){let F="",H=e?e[r]?.[T]:undefined;if(H&&(typeof H=="function"?F=H(X.value):F=H),Oe(t)){let y=`_${T}_patched`;H&&!t.value[y]||(typeof t.value[T]=="function"?F=t.value[T](X.value):F=t.value[T]??"");}return F}let de=computed(()=>{let T=B("message");return ee(T)&&(T="This field is not valid"),T}),ye=computed(()=>B("tooltip")),ie=computed(()=>Oe(t)&&t.value.type?t.value.type:r),u=computed(()=>Oe(t)?t.value.validator:t.value),i=computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),R=computed(()=>`${l}.${ie.value}`);return {$active:I,$message:de,$type:ie,$validator:u,$params:i,$path:R,$tooltip:ye,$fieldCorrect:U,$fieldError:h,$fieldDirty:s,$fieldPending:q,$fieldInvalid:P}}),b=watch(m?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&m.$fieldError.value)&&f();});}O();function v(){M.value=true,m.$fieldDirty.value&&(C.value=true);}async function E(){let s=false;try{let h=m.$validator.value;if(typeof h!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let P=h(n.value,...m.$params.value),q=n.value;v();let U;if(P instanceof Promise?U=await P:U=P,n.value!==q)return !0;if(typeof U=="boolean")s=U;else {let{$valid:X,...I}=U;s=X,w.value=I;}}catch{s=false;}finally{C.value=false;}return s}let D=Fe(E,p??200);async function f(){try{a.value=!0;let s=!1;if(we(t.value)&&t.value._async)s=await D();else {let h=m.$validator.value,P=h(n.value,...m.$params.value);if(P 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(P!=null)if(typeof P=="boolean")s=P;else {let{$valid:q,...U}=P;s=q,w.value=U;}}return M.value=s,s}catch{return false}finally{a.value=false;}}function S(){M.value=true,w.value={},C.value=false,a.value=false,O();}function o(){b(),$.stop(),$=effectScope();}return reactive({...m,$pending:C,$valid:M,$metadata:w,$haveAsync:V,$validating:a,$validate:f,$unwatch:o,$watch:O,$reset:S})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:c,options:p,externalErrors:d,schemaErrors:$,schemaMode:m,onUnwatch:b,$isArray:V,initialState:C,shortcuts:M}){let w=effectScope(),a,O=[],v,E,D,f,S,o=()=>{};function s(){let g=t.value,k=c.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([A])=>A.startsWith("$"))),q(),I.value=Object.fromEntries(Object.entries(t.value).filter(([A])=>!A.startsWith("$")).map(([A,x])=>{if(x){let ue=toRef(()=>x);return [A,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:A,state:e,path:n,storage:c,$debounce:B.value.$debounce})]}return []}).filter(A=>!!A.length)),a.processShortcuts(),h(),k?.valid!=null&&(a.$dirty.value=c.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),c.addRuleDeclEntry(n,g);}function h(){o=a.$debounce.value?Fe(X,a.$debounce.value??a.$haveAnyAsyncRule?100:0):X;}function P(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$unwatch();}),D(),S?.(),a.$dirty.value&&c.setDirtyEntry(n,a.$dirty.value),v?.(),E?.(),w.stop(),w=effectScope(),O.forEach(g=>g.stop()),O=[],b?.(),f?.();}function q(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$watch();}),a=w.run(()=>{let g=ref(false),k=ref(false),A=computed(()=>g.value),x=computed(()=>B.value.$debounce),ue=computed(()=>B.value.$lazy!=null?B.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):false),le=computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:unref(p.rewardEarly)!=null?unref(p.rewardEarly):false),pe=computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:unref(p.clearExternalErrorsOnChange)!=null?unref(p.clearExternalErrorsOnChange):true),W=computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!le.value),j=computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$validating)),z=computed({get:()=>e.value,set(oe){v(),e.value=oe,U();}}),me=computed(()=>ge.value&&!Ie.value&&g.value),at=computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value}})),lt=computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value},silent:true})),Ue=computed(()=>g.value?C.value instanceof Date&&e.value instanceof Date?We(C.value).getDate()!==We(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),ot=computed(()=>Ue.value),st=computed(()=>Dt({field:{$rules:I.value}})),ut=computed(()=>W.value?A.value&&!(ge.value||Ie.value):!(ge.value||Ie.value)),Ie=computed(()=>k.value||!le.value?Object.entries(I.value).some(([oe,Q])=>Q.$pending):false),ge=computed(()=>d?.value?.length||$?.value?.length?true:Me.value?false:!le.value||le.value&&k.value?Object.entries(I.value).some(([oe,Q])=>!Q.$valid):false),it=computed(()=>l),Me=computed(()=>!!(ee(I.value)&&!m)),ct=computed(()=>d?.value?.length||Me.value?false:g.value&&!ee(e.value)&&!j.value?m?!$?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),Ut=computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$haveAsync));function Wt(){M?.fields&&Object.entries(M.fields).forEach(([oe,Q])=>{let Rt=effectScope();ft[oe]=Rt.run(()=>{let dt=ref();return watchEffect(()=>{dt.value=Q(reactive({$dirty:g,$externalErrors:d?.value??[],$value:e,$silentValue:z,$rules:I,$error:me,$pending:Ie,$invalid:ge,$correct:ct,$errors:at,$ready:ut,$silentErrors:lt,$anyDirty:A,$tooltips:st,$name:it,$inactive:Me,$edited:Ue,$anyEdited:ot}));}),dt}),O.push(Rt);});}let ft={};return watch(ge,oe=>{oe||(k.value=false);}),{$error:me,$pending:Ie,$invalid:ge,$correct:ct,$debounce:x,$lazy:ue,$errors:at,$ready:ut,$silentErrors:lt,$rewardEarly:le,$autoDirty:W,$clearExternalErrorsOnChange:pe,$anyDirty:A,$edited:Ue,$anyEdited:ot,$name:it,$haveAnyAsyncRule:Ut,$shortcuts:ft,$validating:j,$tooltips:st,$dirty:g,triggerPunishment:k,processShortcuts:Wt,$silentValue:z,$inactive:Me}}),U(),D=watch(a.$dirty,g=>{c.setDirtyEntry(n,g),Object.values(I.value).forEach(k=>{k.$fieldDirty=g;});}),S=watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldCorrect=a.$correct.value;});}),E=watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),f=watch(a.$haveAnyAsyncRule,h);}function U(){v=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&s(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&i();},{deep:V?true:Ve?1:true,flush:"post"});}function X(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=ref({}),B=ref({});s();function de(g,k){if(i(),a.$dirty.value=false,a.triggerPunishment.value=false,c.setDirtyEntry(n,false),!k)if(g?.toInitialState)P(),e.value=G(C);else if(g?.toState){P();let A;typeof g?.toState=="function"?A=g?.toState():A=g?.toState,C.value=G(A),e.value=G(A);}else C.value=ae(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;k||Object.entries(I.value).forEach(([A,x])=>{x.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(A=>A.$validate()),k||s();}function ye(g=true,k=false){a.$dirty.value||(a.$dirty.value=true),k&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o():g&&o();}async function ie(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return m?{result:!$?.value?.length,data:g}:ee(I.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function u(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function i(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:R,$validating:T,$autoDirty:F,$rewardEarly:H,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:_,$debounce:K,$lazy:Z,triggerPunishment:J,...se}=a;return reactive({...se,$externalErrors:d,$value:e,$rules:I,...R,$reset:de,$touch:ye,$validate:ie,$unwatch:P,$watch:q,$extractDirtyFields:u,$clearExternalErrors:i})}function Qe({$id:e,path:t,index:r,options:n,storage:l,stateValue:c,customMessages:p,rules:d,externalErrors:$,schemaErrors:m,initialState:b,shortcuts:V,fieldName:C,schemaMode:M}){let w=d.$key?d.$key:Se(),a=`${t}.${String(w)}`;typeof c.value=="object"&&c.value!=null&&(c.value.$id?a=`${t}.${c.value.$id}`:Object.defineProperties(c.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let O=toRef($?.value??[],r),v=computed(()=>m?.value?.[r]),E=Ee({state:c,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:O,schemaErrors:v,initialState:b,shortcuts:V,fieldName:C,schemaMode:M});if(E){let D=c.value?.$id;E.$id=D??String(w),l.addArrayStatus(e,E.$id,E);}return E}function Pt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:p,schemaErrors:d,schemaMode:$,initialState:m,shortcuts:b,fieldName:V}){let C=effectScope(),M,w=effectScope(),a,O=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),E=ref(e.value),D,f=ref({}),S=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(i=>typeof i!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(i=>we(i)||typeof i=="function"):false)})),o(),P();function o(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=Se(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),E.value=f.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(u=>typeof u=="object").map((u,i)=>{let{scope:R,unwrapped:T}=qe(t.value.$each,toRef(()=>u),i);R&&O.push(R);let F=toRef(m.value??[],i),H=toRef(p?.value??{},"$each"),y=computed(()=>d?.value?.$each),_=Qe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>u),index:i,options:c,storage:l,externalErrors:H,schemaErrors:y,initialState:F,shortcuts:b,fieldName:V,schemaMode:$});return _||null}).filter(u=>!!u):S.value=[],f.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:toRef(p?.value??{},"$self"),schemaErrors:computed(()=>d?.value?.$self),$isArray:true,initialState:m,shortcuts:b,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let u=G(S.value);S.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let T=toRef(()=>i);if(i.$id&&S.value.find(F=>F.$id===i.$id)){let F=l.getArrayStatus(v.value,i.$id);return F?(F.$value=T,F):null}else {let{scope:F,unwrapped:H}=qe(t.value.$each,T,R);F&&O.push(F);let y=toRef(p?.value??{},"$each"),_=computed(()=>d?.value?.$each??[]),K=Qe({$id:v.value,path:n,customMessages:r,rules:H??{},stateValue:T,index:R,options:c,storage:l,externalErrors:y,schemaErrors:_,initialState:toRef(m.value??[],R),shortcuts:b,fieldName:V,schemaMode:$});return K||null}}).filter(i=>!!i),u.filter(i=>!e.value?.find(R=>i.$id===R.$id)).forEach((i,R)=>{l.deleteArrayStatus(v.value,R.toString());});}else S.value=[];}function h(){D=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?o():s();},{deep:Ve?1:true,flush:"pre"});}function P(){h(),C=effectScope(),M=C.run(()=>{let u=computed({get:()=>e.value,set(x){D(),e.value=x,h();}}),i=computed(()=>f.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),R=computed(()=>f.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=computed(()=>f.value.$invalid||S.value.some(x=>x.$invalid)),F=computed(()=>(ee(f.value.$rules)?true:f.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),H=computed(()=>f.value.$error||S.value.some(x=>x.$error)),y=computed(()=>!(T.value||_.value)),_=computed(()=>f.value.$pending||S.value.some(x=>x.$pending)),K=computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=computed(()=>f.value.$anyEdited||S.value.some(x=>x.$anyEdited)),J=computed(()=>({$self:f.value.$errors,$each:S.value.map(x=>x.$errors)})),se=computed(()=>({$self:f.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=computed(()=>V);function k(){b?.collections&&Object.entries(b?.collections).forEach(([x,ue])=>{let le=effectScope();A[x]=le.run(()=>{let pe=ref();return watchEffect(()=>{pe.value=ue(reactive({$dirty:i,$error:H,$silentValue:u,$pending:_,$invalid:T,$correct:F,$errors:J,$ready:y,$silentErrors:se,$anyDirty:R,$name:g,$each:S,$self:f,$value:e,$edited:K,$anyEdited:Z}));}),pe}),O.push(le);});}let A={};return k(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:_,$errors:J,$silentErrors:se,$ready:y,$name:g,$shortcuts:A,$silentValue:u,$edited:K,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function q(){D&&D(),f.value&&f.value.$unwatch(),S.value&&S.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),C.stop(),C=effectScope(),w.stop(),w=effectScope(true),O.forEach(u=>u.stop()),O=[];}function U(u=true,i=false){f.value.$touch(u,i),S.value.forEach(R=>{R.$touch(u,i);});}function X(u,i){if(q(),!i)if(u?.toInitialState)e.value=G(m.value);else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,m.value=G(R),e.value=G(R);}else m.value=G(e.value);f.value.$reset(),S.value.forEach(R=>{R.$reset(u,true);}),i||o();}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([f.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}catch{return {result:false,data:u}}}function B(){f.value.$clearExternalErrors(),S.value.forEach(u=>{u.$clearExternalErrors();});}function de(u=true){let i=S.value.map(R=>{if(Tt(R))return R.$extractDirtyFields(u)});return u&&i.every(R=>ee(R))&&(i=[]),i}let{$shortcuts:ye,...ie}=M;return reactive({$self:f,...ie,...ye,$each:S,$value:e,$validate:I,$unwatch:q,$watch:P,$touch:U,$reset:X,$extractDirtyFields:de,$clearExternalErrors:B})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:c,rootSchemaErrors:p,validationGroups:d,initialState:$,fieldName:m,...b}){let V=effectScope(),C,M=[],w=null,a=null,O=null,v=null;async function D(u=true){let i=Object.entries(e.value),R=Object.fromEntries(i.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=toRef(t.value??{},y),Z=toRef(()=>_),J=toRef(l?.value??{},y),se=computed(()=>c?.value?.[y]),g=toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:J,schemaErrors:se,initialState:g,fieldName:y,...b})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),F=Object.fromEntries(Object.entries(unref(c)??{}).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(F??{}))).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]}));f.value={...R,...T,...F,...H},u&&s();}let f=b.storage.getFieldsEntry(r);D();function S(){l&&(O=watch(l,()=>{h(),D();},{deep:true}));}function o(){v=watch(t,()=>{h(),D(),U(true,true);},{flush:"sync"});}function s(){n&&(w?.(),w=watch(n,()=>{h(),D();},{deep:true,flush:"post"}),S()),p&&(a?.(),a=watch(p,()=>{h(),D();},{deep:true,flush:"post"})),o(),C=V.run(()=>{let u=computed({get:()=>t.value,set(W){h(),t.value=W,D();}}),i=computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$dirty)),R=computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyDirty)),T=computed(()=>Object.entries(f.value).some(([W,j])=>j?.$invalid)),F=computed(()=>{let W=Object.entries(f.value).filter(([j,z])=>xt(z)?!z.$inactive:true);return W.length?W.every(([j,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=computed(()=>R.value&&!J.value&&T.value),y=computed(()=>unref(b.options.rewardEarly)!=null?unref(b.options.rewardEarly):false),_=computed(()=>unref(b.options.autoDirty)!=null?unref(b.options.autoDirty):!y.value),K=computed(()=>_.value?R.value&&!(T.value||J.value):!(T.value||J.value)),Z=ref(false),J=computed(()=>Z.value||Object.entries(f.value).some(([W,j])=>j?.$pending)),se=computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$silentErrors]))),k=computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$edited)),A=computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyEdited)),x=computed(()=>m);function ue(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([W,j])=>{let z=effectScope();pe[W]=z.run(()=>{let me=ref();return watchEffect(()=>{me.value=j(reactive({$dirty:i,$value:t,$silentValue:u,$error:H,$pending:J,$invalid:T,$correct:F,$ready:K,$anyDirty:R,$name:x,$silentErrors:g,$errors:se,$fields:f,$edited:k,$anyEdited:A}));}),me}),M.push(z);});}let le=computed({get:()=>d?Object.fromEntries(Object.entries(d?.(f.value)??{}).map(([W,j])=>j.length?[W,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,mt(j,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,yt(j,z)]))}]:[])):{},set(){}}),pe={};return ue(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:J,$errors:se,$silentErrors:g,$ready:K,$name:x,$shortcuts:pe,$groups:le,$silentValue:u,$edited:k,$anyEdited:A,$localPending:Z}});}function h(){w?.(),O?.(),v?.(),a?.(),M=[],C={},f.value&&Object.entries(f.value).forEach(([u,i])=>{i.$unwatch();});}function P(){Object.entries(f.value).forEach(([u,i])=>{i.$clearExternalErrors();});}function q(u,i){if(O?.(),h(),!i)if(u?.toInitialState)t.value=G({...$.value??{}});else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,$.value=G(R),t.value=G(R);}else $.value=G(t.value);Object.values(f.value).forEach(R=>{R.$reset(u,true);}),S(),i||D();}function U(u=true,i=false){Object.values(f.value).forEach(R=>{R.$touch(u,i);});}function X(u){return u.filter(([i,R])=>ae(R)?!(R&&typeof R=="object"&&"_null"in R)&&!ee(R):Array.isArray(R)?R.length:true)}function I(u=true){let i=Object.entries(f.value).map(([R,T])=>[R,T.$extractDirtyFields(u)]);return u&&(i=X(i)),Object.fromEntries(i)}async function B(){try{if(b.schemaMode)return b.onValidate?(U(!1),C.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let u=t.value;return {result:(await Promise.allSettled(Object.values(f.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}}catch{return {result:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:de,$localPending:ye,...ie}=C;return reactive({...ie,...de,$fields:f,$value:t,$reset:q,$touch:U,$validate:B,$unwatch:h,$watch:s,$clearExternalErrors:P,$extractDirtyFields:I})}function Ee({rulesDef:e,...t}){if(bt(e,t.state))return Pt({rulesDef:e,...t});if(ht(t.state,e)){if(je(t.state))return Ne({rulesDef:e,...t});{let n=effectScope().run(()=>{let p=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,d=>{p.value=d;},{deep:true}),watch(p,d=>{t.state.value=d;},{deep:true}),{fakeState:p}}),{state:l,...c}=t;return Ne({rulesDef:e,...c,state:n.fakeState})}}else if(Et(e))return _e({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:c,schemaErrors:p,schemaMode:d=false,onValidate:$}){let m=ze(),b=ref();return b.value=Ne({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaErrors:p,rootSchemaErrors:p,schemaMode:d,onValidate:$}),getCurrentScope()&&onScopeDispose(()=>{b.value?.$unwatch();}),reactive({regle:b})}function et(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(c,p,d){let $=isRef(p)?p:computed(typeof p=="function"?p:()=>p),m={...n,...d},b=isRef(c)?c:ref(c),V=ref({...G(b.value)});return {r$:Ce({scopeRules:$,state:b,options:m,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var Ge=et();function tt(){function e(t,r){return r}return e}var rt=tt();function jt({rules:e,modifiers:t,shortcuts:r}){let n=et(e,t,r),l=tt();return {useRegle:n,inferRules:l}}function Ae(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,h])=>e[s].$value=h);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,h])=>e[s].$silentValue=h);}}),c=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$dirty)}),p=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),d=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$correct||h.$anyDirty&&!h.$invalid)}),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$ready)}),V=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),C=computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),M=computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$edited)}),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),O=computed(()=>r?Object.values(e):e);function v(o){Object.values(e).forEach(s=>{s.$reset(o);});}function E(){Object.values(e).forEach(o=>{o.$touch();});}function D(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function f(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function S(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(P=>P.$validate()))).every(P=>P.status==="fulfilled"?P.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:M,$instances:O,$value:n,$dirty:c,$anyDirty:p,$invalid:d,$correct:$,$error:m,$pending:V,$ready:b,$edited:w,$anyEdited:a,$reset:v,$touch:E,$validate:S,$extractDirtyFields:D,$clearExternalErrors:f})}function _t(e){function t(r){let n=computed(()=>toValue(r));p();let l=ref(d(e.value)),c=reactive({r$:l});function p(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,p),watch(e,$=>{l.value=d($);},{deep:true});function d($){if(n.value){let m=$[n.value]??{};return Ae(m,true)}else return Ae($["~~global"]??{},true)}return {r$:c.r$}}return {useCollectScope:t}}function Gt(e,t){let r=t??Ge;return {useScopedRegle:(l,c,p)=>{let{namespace:d,...$}=p??{},m=computed(()=>toValue(d)),b=ref(`${Object.keys(e.value).length+1}-${Se()}`),V=computed(()=>`instance-${b.value}`),{r$:C}=r(l,c,$);w(),$t(M),watch(m,(a,O)=>{M(O),w();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&M();});function M(a){let O=a??m.value;O?e.value[O]&&delete e.value[O][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:M,register:w}}}}function nt(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):St(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Gt(r,e?.customUseRegle),{useCollectScope:l}=_t(r);return {useScopedRegle:n,useCollectScope:l}}
|
|
2
|
+
export{Le as InternalRuleType,He as createRule,nt as createScopedUseRegle,jt as defineRegleConfig,rt as inferRules,Ae as mergeRegles,te as unwrapRuleParameters,Ge as useRegle,Ce as useRootStorage};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -1098,20 +1098,42 @@ function createReactiveFieldStatus({
|
|
|
1098
1098
|
const $rules = ref({});
|
|
1099
1099
|
const $localOptions = ref({});
|
|
1100
1100
|
createReactiveRulesResult();
|
|
1101
|
-
function $reset() {
|
|
1101
|
+
function $reset(options2, fromParent) {
|
|
1102
1102
|
$clearExternalErrors();
|
|
1103
1103
|
scopeState.$dirty.value = false;
|
|
1104
1104
|
scopeState.triggerPunishment.value = false;
|
|
1105
1105
|
storage.setDirtyEntry(path, false);
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1106
|
+
if (!fromParent) {
|
|
1107
|
+
if (options2?.toInitialState) {
|
|
1108
|
+
$unwatch();
|
|
1109
|
+
state.value = cloneDeep(initialState);
|
|
1110
|
+
} else if (options2?.toState) {
|
|
1111
|
+
$unwatch();
|
|
1112
|
+
let newInitialState;
|
|
1113
|
+
if (typeof options2?.toState === "function") {
|
|
1114
|
+
newInitialState = options2?.toState();
|
|
1115
|
+
} else {
|
|
1116
|
+
newInitialState = options2?.toState;
|
|
1117
|
+
}
|
|
1118
|
+
initialState.value = cloneDeep(newInitialState);
|
|
1119
|
+
state.value = cloneDeep(newInitialState);
|
|
1120
|
+
} else {
|
|
1121
|
+
initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
if (!fromParent) {
|
|
1125
|
+
Object.entries($rules.value).forEach(([_, rule]) => {
|
|
1126
|
+
rule.$reset();
|
|
1127
|
+
});
|
|
1128
|
+
}
|
|
1110
1129
|
if (!scopeState.$lazy.value && scopeState.$autoDirty.value) {
|
|
1111
1130
|
Object.values($rules.value).forEach((rule) => {
|
|
1112
1131
|
return rule.$validate();
|
|
1113
1132
|
});
|
|
1114
1133
|
}
|
|
1134
|
+
if (!fromParent) {
|
|
1135
|
+
createReactiveRulesResult();
|
|
1136
|
+
}
|
|
1115
1137
|
}
|
|
1116
1138
|
function $touch(runCommit = true, withConditions = false) {
|
|
1117
1139
|
if (!scopeState.$dirty.value) {
|
|
@@ -1156,11 +1178,6 @@ function createReactiveFieldStatus({
|
|
|
1156
1178
|
return { result: false, data: state.value };
|
|
1157
1179
|
}
|
|
1158
1180
|
}
|
|
1159
|
-
function $resetAll() {
|
|
1160
|
-
$unwatch();
|
|
1161
|
-
state.value = cloneDeep(initialState);
|
|
1162
|
-
$reset();
|
|
1163
|
-
}
|
|
1164
1181
|
function $extractDirtyFields(filterNullishValues = true) {
|
|
1165
1182
|
if (scopeState.$dirty.value) {
|
|
1166
1183
|
return state.value;
|
|
@@ -1201,7 +1218,6 @@ function createReactiveFieldStatus({
|
|
|
1201
1218
|
$validate,
|
|
1202
1219
|
$unwatch,
|
|
1203
1220
|
$watch,
|
|
1204
|
-
$resetAll,
|
|
1205
1221
|
$extractDirtyFields,
|
|
1206
1222
|
$clearExternalErrors
|
|
1207
1223
|
});
|
|
@@ -1590,11 +1606,31 @@ function createReactiveCollectionStatus({
|
|
|
1590
1606
|
$each.$touch(runCommit, withConditions);
|
|
1591
1607
|
});
|
|
1592
1608
|
}
|
|
1593
|
-
function $reset() {
|
|
1609
|
+
function $reset(options2, fromParent) {
|
|
1610
|
+
$unwatch();
|
|
1611
|
+
if (!fromParent) {
|
|
1612
|
+
if (options2?.toInitialState) {
|
|
1613
|
+
state.value = cloneDeep(initialState.value);
|
|
1614
|
+
} else if (options2?.toState) {
|
|
1615
|
+
let newInitialState;
|
|
1616
|
+
if (typeof options2?.toState === "function") {
|
|
1617
|
+
newInitialState = options2?.toState();
|
|
1618
|
+
} else {
|
|
1619
|
+
newInitialState = options2?.toState;
|
|
1620
|
+
}
|
|
1621
|
+
initialState.value = cloneDeep(newInitialState);
|
|
1622
|
+
state.value = cloneDeep(newInitialState);
|
|
1623
|
+
} else {
|
|
1624
|
+
initialState.value = cloneDeep(state.value);
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1594
1627
|
$selfStatus.value.$reset();
|
|
1595
1628
|
$eachStatus.value.forEach(($each) => {
|
|
1596
|
-
$each.$reset();
|
|
1629
|
+
$each.$reset(options2, true);
|
|
1597
1630
|
});
|
|
1631
|
+
if (!fromParent) {
|
|
1632
|
+
createStatus();
|
|
1633
|
+
}
|
|
1598
1634
|
}
|
|
1599
1635
|
async function $validate() {
|
|
1600
1636
|
const data = state.value;
|
|
@@ -1638,11 +1674,6 @@ function createReactiveCollectionStatus({
|
|
|
1638
1674
|
}
|
|
1639
1675
|
return dirtyFields;
|
|
1640
1676
|
}
|
|
1641
|
-
function $resetAll() {
|
|
1642
|
-
$unwatch();
|
|
1643
|
-
state.value = cloneDeep(initialState.value);
|
|
1644
|
-
$reset();
|
|
1645
|
-
}
|
|
1646
1677
|
const { $shortcuts, ...restScopeState } = scopeState;
|
|
1647
1678
|
return reactive({
|
|
1648
1679
|
$self: $selfStatus,
|
|
@@ -1655,7 +1686,6 @@ function createReactiveCollectionStatus({
|
|
|
1655
1686
|
$watch,
|
|
1656
1687
|
$touch,
|
|
1657
1688
|
$reset,
|
|
1658
|
-
$resetAll,
|
|
1659
1689
|
$extractDirtyFields,
|
|
1660
1690
|
$clearExternalErrors
|
|
1661
1691
|
});
|
|
@@ -2030,25 +2060,38 @@ function createReactiveNestedStatus({
|
|
|
2030
2060
|
field.$clearExternalErrors();
|
|
2031
2061
|
});
|
|
2032
2062
|
}
|
|
2033
|
-
function $reset() {
|
|
2063
|
+
function $reset(options, fromParent) {
|
|
2034
2064
|
$unwatchExternalErrors?.();
|
|
2065
|
+
$unwatch();
|
|
2066
|
+
if (!fromParent) {
|
|
2067
|
+
if (options?.toInitialState) {
|
|
2068
|
+
state.value = cloneDeep({ ...initialState.value ?? {} });
|
|
2069
|
+
} else if (options?.toState) {
|
|
2070
|
+
let newInitialState;
|
|
2071
|
+
if (typeof options?.toState === "function") {
|
|
2072
|
+
newInitialState = options?.toState();
|
|
2073
|
+
} else {
|
|
2074
|
+
newInitialState = options?.toState;
|
|
2075
|
+
}
|
|
2076
|
+
initialState.value = cloneDeep(newInitialState);
|
|
2077
|
+
state.value = cloneDeep(newInitialState);
|
|
2078
|
+
} else {
|
|
2079
|
+
initialState.value = cloneDeep(state.value);
|
|
2080
|
+
}
|
|
2081
|
+
}
|
|
2035
2082
|
Object.values($fields.value).forEach((statusOrField) => {
|
|
2036
|
-
statusOrField.$reset();
|
|
2083
|
+
statusOrField.$reset(options, true);
|
|
2037
2084
|
});
|
|
2038
|
-
initialState.value = { ...cloneDeep(state.value) };
|
|
2039
2085
|
define$WatchExternalErrors();
|
|
2086
|
+
if (!fromParent) {
|
|
2087
|
+
createReactiveFieldsStatus();
|
|
2088
|
+
}
|
|
2040
2089
|
}
|
|
2041
2090
|
function $touch(runCommit = true, withConditions = false) {
|
|
2042
2091
|
Object.values($fields.value).forEach((statusOrField) => {
|
|
2043
2092
|
statusOrField.$touch(runCommit, withConditions);
|
|
2044
2093
|
});
|
|
2045
2094
|
}
|
|
2046
|
-
async function $resetAll() {
|
|
2047
|
-
$unwatch();
|
|
2048
|
-
state.value = cloneDeep({ ...initialState.value ?? {} });
|
|
2049
|
-
$reset();
|
|
2050
|
-
createReactiveFieldsStatus();
|
|
2051
|
-
}
|
|
2052
2095
|
function filterNullishFields(fields) {
|
|
2053
2096
|
return fields.filter(([key, value]) => {
|
|
2054
2097
|
if (isObject(value)) {
|
|
@@ -2107,7 +2150,6 @@ function createReactiveNestedStatus({
|
|
|
2107
2150
|
...$shortcuts,
|
|
2108
2151
|
$fields,
|
|
2109
2152
|
$value: state,
|
|
2110
|
-
$resetAll,
|
|
2111
2153
|
$reset,
|
|
2112
2154
|
$touch,
|
|
2113
2155
|
$validate,
|
|
@@ -2365,9 +2407,9 @@ function mergeRegles(regles, _scoped) {
|
|
|
2365
2407
|
return regles;
|
|
2366
2408
|
}
|
|
2367
2409
|
});
|
|
2368
|
-
function $reset() {
|
|
2410
|
+
function $reset(options) {
|
|
2369
2411
|
Object.values(regles).forEach((regle) => {
|
|
2370
|
-
regle.$reset();
|
|
2412
|
+
regle.$reset(options);
|
|
2371
2413
|
});
|
|
2372
2414
|
}
|
|
2373
2415
|
function $touch() {
|
|
@@ -2375,11 +2417,6 @@ function mergeRegles(regles, _scoped) {
|
|
|
2375
2417
|
regle.$touch();
|
|
2376
2418
|
});
|
|
2377
2419
|
}
|
|
2378
|
-
function $resetAll() {
|
|
2379
|
-
Object.values(regles).forEach((regle) => {
|
|
2380
|
-
regle.$resetAll();
|
|
2381
|
-
});
|
|
2382
|
-
}
|
|
2383
2420
|
function $extractDirtyFields(filterNullishValues = true) {
|
|
2384
2421
|
return Object.values(regles).map((regle) => regle.$extractDirtyFields(filterNullishValues));
|
|
2385
2422
|
}
|
|
@@ -2425,7 +2462,6 @@ function mergeRegles(regles, _scoped) {
|
|
|
2425
2462
|
$ready,
|
|
2426
2463
|
$edited,
|
|
2427
2464
|
$anyEdited,
|
|
2428
|
-
$resetAll,
|
|
2429
2465
|
$reset,
|
|
2430
2466
|
$touch,
|
|
2431
2467
|
$validate,
|