@regle/core 0.5.13 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.cjs +29 -29
- package/dist/regle-core.d.cts +19 -6
- package/dist/regle-core.d.ts +19 -6
- package/dist/regle-core.min.cjs +1 -1
- package/dist/regle-core.min.mjs +1 -1
- package/dist/regle-core.mjs +29 -29
- package/package.json +1 -1
package/dist/regle-core.cjs
CHANGED
|
@@ -450,7 +450,7 @@ function isNestedRulesDef(state, rules) {
|
|
|
450
450
|
return isRefObject(state) || isObject(rules.value) && !isEmpty(rules.value) && !Object.entries(rules.value).some(([key, rule]) => isRuleDef(rule) || typeof rule === "function");
|
|
451
451
|
}
|
|
452
452
|
function isCollectionRulesDef(rules, state) {
|
|
453
|
-
return !!rules.value && "$each" in rules.value || Array.isArray(state.value);
|
|
453
|
+
return !!rules.value && isObject(rules.value) && "$each" in rules.value || Array.isArray(state.value);
|
|
454
454
|
}
|
|
455
455
|
function isValidatorRulesDef(rules) {
|
|
456
456
|
return !!rules.value && isObject(rules.value);
|
|
@@ -932,7 +932,7 @@ function createReactiveFieldStatus({
|
|
|
932
932
|
} else if (isEmpty($rules.value)) {
|
|
933
933
|
return false;
|
|
934
934
|
} else if (!$rewardEarly2.value || $rewardEarly2.value && triggerPunishment.value) {
|
|
935
|
-
return Object.entries($rules.value).some(([
|
|
935
|
+
return Object.entries($rules.value).some(([_, ruleResult]) => {
|
|
936
936
|
return !ruleResult.$valid;
|
|
937
937
|
});
|
|
938
938
|
}
|
|
@@ -1062,7 +1062,7 @@ function createReactiveFieldStatus({
|
|
|
1062
1062
|
$clearExternalErrors();
|
|
1063
1063
|
}
|
|
1064
1064
|
},
|
|
1065
|
-
{ deep: $isArray ? true : isVueSuperiorOrEqualTo3dotFive ? 1 : true }
|
|
1065
|
+
{ deep: $isArray ? true : isVueSuperiorOrEqualTo3dotFive ? 1 : true, flush: "post" }
|
|
1066
1066
|
);
|
|
1067
1067
|
}
|
|
1068
1068
|
function $commitHandler() {
|
|
@@ -1252,14 +1252,14 @@ function createReactiveCollectionStatus({
|
|
|
1252
1252
|
const $id = vue.ref();
|
|
1253
1253
|
const $value = vue.ref(state.value);
|
|
1254
1254
|
let $unwatchState;
|
|
1255
|
-
const $
|
|
1255
|
+
const $selfStatus = vue.ref({});
|
|
1256
1256
|
const $eachStatus = storage.getCollectionsEntry(path);
|
|
1257
1257
|
immediateScopeState = immediateScope.run(() => {
|
|
1258
1258
|
const isPrimitiveArray = vue.computed(() => {
|
|
1259
1259
|
if (Array.isArray(state.value) && state.value.length) {
|
|
1260
|
-
return state.value.
|
|
1260
|
+
return state.value.every((s) => typeof s !== "object");
|
|
1261
1261
|
} else if (rulesDef.value.$each && !(rulesDef.value.$each instanceof Function)) {
|
|
1262
|
-
return Object.values(rulesDef.value.$each).every((rule) => isRuleDef(rule));
|
|
1262
|
+
return Object.values(rulesDef.value.$each).every((rule) => isRuleDef(rule) || typeof rule === "function");
|
|
1263
1263
|
}
|
|
1264
1264
|
return false;
|
|
1265
1265
|
});
|
|
@@ -1288,7 +1288,7 @@ function createReactiveCollectionStatus({
|
|
|
1288
1288
|
if (immediateScopeState.isPrimitiveArray.value) {
|
|
1289
1289
|
return;
|
|
1290
1290
|
}
|
|
1291
|
-
$value.value = $
|
|
1291
|
+
$value.value = $selfStatus.value.$value;
|
|
1292
1292
|
if (Array.isArray(state.value)) {
|
|
1293
1293
|
$eachStatus.value = state.value.map((value, index) => {
|
|
1294
1294
|
const { scope: scope2, unwrapped } = unwrapGetter(
|
|
@@ -1322,7 +1322,7 @@ function createReactiveCollectionStatus({
|
|
|
1322
1322
|
} else {
|
|
1323
1323
|
$eachStatus.value = [];
|
|
1324
1324
|
}
|
|
1325
|
-
$
|
|
1325
|
+
$selfStatus.value = createReactiveFieldStatus({
|
|
1326
1326
|
state,
|
|
1327
1327
|
rulesDef,
|
|
1328
1328
|
customMessages,
|
|
@@ -1408,27 +1408,27 @@ function createReactiveCollectionStatus({
|
|
|
1408
1408
|
}
|
|
1409
1409
|
});
|
|
1410
1410
|
const $dirty = vue.computed(() => {
|
|
1411
|
-
return $
|
|
1411
|
+
return $selfStatus.value.$dirty && !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
|
|
1412
1412
|
return statusOrField.$dirty;
|
|
1413
1413
|
});
|
|
1414
1414
|
});
|
|
1415
1415
|
const $anyDirty = vue.computed(() => {
|
|
1416
|
-
return $
|
|
1416
|
+
return $selfStatus.value.$anyDirty || $eachStatus.value.some((statusOrField) => {
|
|
1417
1417
|
return statusOrField.$anyDirty;
|
|
1418
1418
|
});
|
|
1419
1419
|
});
|
|
1420
1420
|
const $invalid = vue.computed(() => {
|
|
1421
|
-
return $
|
|
1421
|
+
return $selfStatus.value.$invalid || $eachStatus.value.some((statusOrField) => {
|
|
1422
1422
|
return statusOrField.$invalid;
|
|
1423
1423
|
});
|
|
1424
1424
|
});
|
|
1425
1425
|
const $valid = vue.computed(() => {
|
|
1426
|
-
return (isEmpty($
|
|
1426
|
+
return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$valid) && $eachStatus.value.every((statusOrField) => {
|
|
1427
1427
|
return statusOrField.$valid;
|
|
1428
1428
|
});
|
|
1429
1429
|
});
|
|
1430
1430
|
const $error = vue.computed(() => {
|
|
1431
|
-
return $
|
|
1431
|
+
return $selfStatus.value.$error || $eachStatus.value.some((statusOrField) => {
|
|
1432
1432
|
return statusOrField.$error;
|
|
1433
1433
|
});
|
|
1434
1434
|
});
|
|
@@ -1436,7 +1436,7 @@ function createReactiveCollectionStatus({
|
|
|
1436
1436
|
return !($invalid.value || $pending.value);
|
|
1437
1437
|
});
|
|
1438
1438
|
const $pending = vue.computed(() => {
|
|
1439
|
-
return $
|
|
1439
|
+
return $selfStatus.value.$pending || $eachStatus.value.some((statusOrField) => {
|
|
1440
1440
|
return statusOrField.$pending;
|
|
1441
1441
|
});
|
|
1442
1442
|
});
|
|
@@ -1446,19 +1446,19 @@ function createReactiveCollectionStatus({
|
|
|
1446
1446
|
});
|
|
1447
1447
|
});
|
|
1448
1448
|
const $anyEdited = vue.computed(() => {
|
|
1449
|
-
return $
|
|
1449
|
+
return $selfStatus.value.$anyEdited || $eachStatus.value.some((statusOrField) => {
|
|
1450
1450
|
return statusOrField.$anyEdited;
|
|
1451
1451
|
});
|
|
1452
1452
|
});
|
|
1453
1453
|
const $errors = vue.computed(() => {
|
|
1454
1454
|
return {
|
|
1455
|
-
$self: $
|
|
1455
|
+
$self: $selfStatus.value.$errors,
|
|
1456
1456
|
$each: $eachStatus.value.map(($each) => $each.$errors)
|
|
1457
1457
|
};
|
|
1458
1458
|
});
|
|
1459
1459
|
const $silentErrors = vue.computed(() => {
|
|
1460
1460
|
return {
|
|
1461
|
-
$self: $
|
|
1461
|
+
$self: $selfStatus.value.$silentErrors,
|
|
1462
1462
|
$each: $eachStatus.value.map(($each) => $each.$silentErrors)
|
|
1463
1463
|
};
|
|
1464
1464
|
});
|
|
@@ -1484,7 +1484,7 @@ function createReactiveCollectionStatus({
|
|
|
1484
1484
|
$anyDirty,
|
|
1485
1485
|
$name,
|
|
1486
1486
|
$each: $eachStatus,
|
|
1487
|
-
$
|
|
1487
|
+
$self: $selfStatus,
|
|
1488
1488
|
$value: state,
|
|
1489
1489
|
$edited,
|
|
1490
1490
|
$anyEdited
|
|
@@ -1527,8 +1527,8 @@ function createReactiveCollectionStatus({
|
|
|
1527
1527
|
if ($unwatchState) {
|
|
1528
1528
|
$unwatchState();
|
|
1529
1529
|
}
|
|
1530
|
-
if ($
|
|
1531
|
-
$
|
|
1530
|
+
if ($selfStatus.value) {
|
|
1531
|
+
$selfStatus.value.$unwatch();
|
|
1532
1532
|
}
|
|
1533
1533
|
if ($eachStatus.value) {
|
|
1534
1534
|
$eachStatus.value.forEach((element) => {
|
|
@@ -1545,13 +1545,13 @@ function createReactiveCollectionStatus({
|
|
|
1545
1545
|
collectionScopes = [];
|
|
1546
1546
|
}
|
|
1547
1547
|
function $touch(runCommit = true, withConditions = false) {
|
|
1548
|
-
$
|
|
1548
|
+
$selfStatus.value.$touch(runCommit, withConditions);
|
|
1549
1549
|
$eachStatus.value.forEach(($each) => {
|
|
1550
1550
|
$each.$touch(runCommit, withConditions);
|
|
1551
1551
|
});
|
|
1552
1552
|
}
|
|
1553
1553
|
function $reset() {
|
|
1554
|
-
$
|
|
1554
|
+
$selfStatus.value.$reset();
|
|
1555
1555
|
$eachStatus.value.forEach(($each) => {
|
|
1556
1556
|
$each.$reset();
|
|
1557
1557
|
});
|
|
@@ -1560,7 +1560,7 @@ function createReactiveCollectionStatus({
|
|
|
1560
1560
|
const data = state.value;
|
|
1561
1561
|
try {
|
|
1562
1562
|
const results = await Promise.allSettled([
|
|
1563
|
-
$
|
|
1563
|
+
$selfStatus.value.$validate(),
|
|
1564
1564
|
...$eachStatus.value.map((rule) => {
|
|
1565
1565
|
return rule.$validate();
|
|
1566
1566
|
})
|
|
@@ -1578,7 +1578,7 @@ function createReactiveCollectionStatus({
|
|
|
1578
1578
|
}
|
|
1579
1579
|
}
|
|
1580
1580
|
function $clearExternalErrors() {
|
|
1581
|
-
$
|
|
1581
|
+
$selfStatus.value.$clearExternalErrors();
|
|
1582
1582
|
$eachStatus.value.forEach(($each) => {
|
|
1583
1583
|
$each.$clearExternalErrors();
|
|
1584
1584
|
});
|
|
@@ -1605,7 +1605,7 @@ function createReactiveCollectionStatus({
|
|
|
1605
1605
|
}
|
|
1606
1606
|
const { $shortcuts, ...restScopeState } = scopeState;
|
|
1607
1607
|
return vue.reactive({
|
|
1608
|
-
$
|
|
1608
|
+
$self: $selfStatus,
|
|
1609
1609
|
...restScopeState,
|
|
1610
1610
|
...$shortcuts,
|
|
1611
1611
|
$each: $eachStatus,
|
|
@@ -1644,7 +1644,7 @@ function createReactiveNestedStatus({
|
|
|
1644
1644
|
const scopedRulesStatus = Object.fromEntries(
|
|
1645
1645
|
mapOfRulesDef.filter(([_, rule]) => !!rule).map(([statePropKey, statePropRules]) => {
|
|
1646
1646
|
if (statePropRules) {
|
|
1647
|
-
const stateRef = vue.toRef(state.value, statePropKey);
|
|
1647
|
+
const stateRef = vue.toRef(state.value ?? {}, statePropKey);
|
|
1648
1648
|
const statePropRulesRef = vue.toRef(() => statePropRules);
|
|
1649
1649
|
const $externalErrors = vue.toRef(externalErrors?.value ?? {}, statePropKey);
|
|
1650
1650
|
const initialStateRef = vue.toRef(initialState?.value ?? {}, statePropKey);
|
|
@@ -1666,7 +1666,7 @@ function createReactiveNestedStatus({
|
|
|
1666
1666
|
);
|
|
1667
1667
|
const externalRulesStatus = Object.fromEntries(
|
|
1668
1668
|
Object.entries(vue.unref(externalErrors) ?? {}).filter(([key, errors]) => !(key in rulesDef.value) && !!errors).map(([key]) => {
|
|
1669
|
-
const stateRef = vue.toRef(state.value, key);
|
|
1669
|
+
const stateRef = vue.toRef(state.value ?? {}, key);
|
|
1670
1670
|
const initialStateRef = vue.toRef(initialState?.value ?? {}, key);
|
|
1671
1671
|
return [
|
|
1672
1672
|
key,
|
|
@@ -1683,8 +1683,8 @@ function createReactiveNestedStatus({
|
|
|
1683
1683
|
})
|
|
1684
1684
|
);
|
|
1685
1685
|
const statesWithNoRules = Object.fromEntries(
|
|
1686
|
-
Object.entries(state.value).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
|
|
1687
|
-
const stateRef = vue.toRef(state.value, key);
|
|
1686
|
+
Object.entries(state.value ?? {}).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
|
|
1687
|
+
const stateRef = vue.toRef(state.value ?? {}, key);
|
|
1688
1688
|
const initialStateRef = vue.toRef(initialState?.value ?? {}, key);
|
|
1689
1689
|
return [
|
|
1690
1690
|
key,
|
package/dist/regle-core.d.cts
CHANGED
|
@@ -509,6 +509,9 @@ interface RegleValidationGroupOutput {
|
|
|
509
509
|
$silentErrors: string[];
|
|
510
510
|
}
|
|
511
511
|
type FieldRegleBehaviourOptions = AddDollarToOptions<RegleBehaviourOptions> & {
|
|
512
|
+
/**
|
|
513
|
+
* Let you declare the number of milliseconds the rule needs to wait before executing. Useful for async or heavy computations.
|
|
514
|
+
*/
|
|
512
515
|
$debounce?: number;
|
|
513
516
|
};
|
|
514
517
|
type ResolvedRegleBehaviourOptions = DeepMaybeRef<RequiredDeep<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Record<string, any>, Record<string, any>, Record<string, any[]>>;
|
|
@@ -516,8 +519,17 @@ type ShortcutCommonFn<T extends Record<string, any>> = {
|
|
|
516
519
|
[x: string]: (element: OmitByType<T, Function>) => unknown;
|
|
517
520
|
};
|
|
518
521
|
type RegleShortcutDefinition<TCustomRules extends Record<string, any> = {}> = {
|
|
522
|
+
/**
|
|
523
|
+
* Allow you to customize the properties of every single field
|
|
524
|
+
*/
|
|
519
525
|
fields?: ShortcutCommonFn<RegleFieldStatus<any, Partial<TCustomRules> & Partial<DefaultValidators>>>;
|
|
526
|
+
/**
|
|
527
|
+
* Allow you to customize the properties of every parent of a nested object
|
|
528
|
+
*/
|
|
520
529
|
nested?: ShortcutCommonFn<RegleStatus<Record<string, any>, ReglePartialRuleTree<any, Partial<TCustomRules> & Partial<DefaultValidators>>>>;
|
|
530
|
+
/**
|
|
531
|
+
* Allow you to customize the properties of every parent of a collection
|
|
532
|
+
*/
|
|
521
533
|
collections?: ShortcutCommonFn<RegleCollectionStatus<any[], Partial<TCustomRules> & Partial<DefaultValidators>>>;
|
|
522
534
|
};
|
|
523
535
|
type AddDollarToOptions<T extends Record<string, any>> = {
|
|
@@ -528,7 +540,7 @@ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends
|
|
|
528
540
|
/**
|
|
529
541
|
* r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display informations.
|
|
530
542
|
*
|
|
531
|
-
* To see the list of properties: {@link https://
|
|
543
|
+
* To see the list of properties: {@link https://reglejs.dev/core-concepts/validation-properties}
|
|
532
544
|
*/
|
|
533
545
|
r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
|
|
534
546
|
}
|
|
@@ -536,9 +548,10 @@ type isDeepExact<T, U> = {
|
|
|
536
548
|
[K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
|
|
537
549
|
}[keyof T] extends true ? true : false;
|
|
538
550
|
type CheckDeepExact<T, U> = [U] extends [never] ? false : T extends RegleCollectionRuleDecl ? U extends RegleCollectionRuleDecl ? isDeepExact<NonNullable<T['$each']>, UnionToIntersection$1<NonNullable<U['$each']>>> : T extends RegleRuleDecl ? true : T extends ReglePartialRuleTree<any> ? isDeepExact<T, U> : false : T extends RegleRuleDecl ? true : T extends ReglePartialRuleTree<any> ? isDeepExact<T, U> : false;
|
|
539
|
-
type DeepReactiveState<T extends Record<string, any
|
|
540
|
-
[K in keyof T]:
|
|
551
|
+
type DeepReactiveState<T extends Record<string, any> | undefined> = {
|
|
552
|
+
[K in keyof T]: InferDeepReactiveState<T[K]>;
|
|
541
553
|
};
|
|
554
|
+
type InferDeepReactiveState<TState> = NonNullable<TState> extends Array<infer U extends Record<string, any>> ? DeepReactiveState<U[]> : NonNullable<TState> extends Date | File ? MaybeRef<TState> : TState extends Record<string, any> | undefined ? DeepReactiveState<TState> : MaybeRef<TState>;
|
|
542
555
|
type DeepSafeFormState<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> | undefined> = [unknown] extends [TState] ? {} : TRules extends undefined ? TState : TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> ? Prettify<{
|
|
543
556
|
[K in keyof TState as IsPropertyOutputRequired<TState[K], TRules[K]> extends false ? K : never]?: SafeProperty<TState[K], TRules[K]>;
|
|
544
557
|
} & {
|
|
@@ -1581,7 +1594,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
1581
1594
|
/** Collection of status of every item in your collection. Each item will be a field you can access, or map on it to display your elements. */
|
|
1582
1595
|
readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, TShortcuts>>;
|
|
1583
1596
|
/** Represents the status of the collection itself. You can have validation rules on the array like minLength, this field represents the isolated status of the collection. */
|
|
1584
|
-
readonly $
|
|
1597
|
+
readonly $self: RegleFieldStatus<TState, TFieldRule, TShortcuts>;
|
|
1585
1598
|
/** Collection of all the error messages, collected for all children properties and nested forms.
|
|
1586
1599
|
*
|
|
1587
1600
|
* Only contains errors from properties where $dirty equals true. */
|
|
@@ -1600,7 +1613,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
1600
1613
|
* @reference {@link RegleCollectionStatus}
|
|
1601
1614
|
*/
|
|
1602
1615
|
interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fields' | '$errors' | '$silentErrors'> {
|
|
1603
|
-
readonly $
|
|
1616
|
+
readonly $self: $InternalRegleFieldStatus;
|
|
1604
1617
|
readonly $each: Array<$InternalRegleStatusType>;
|
|
1605
1618
|
readonly $errors: $InternalRegleCollectionErrors;
|
|
1606
1619
|
readonly $silentErrors: $InternalRegleCollectionErrors;
|
|
@@ -1675,4 +1688,4 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
1675
1688
|
inferRules: inferRulesFn<TCustomRules>;
|
|
1676
1689
|
};
|
|
1677
1690
|
|
|
1678
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
|
1691
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
package/dist/regle-core.d.ts
CHANGED
|
@@ -509,6 +509,9 @@ interface RegleValidationGroupOutput {
|
|
|
509
509
|
$silentErrors: string[];
|
|
510
510
|
}
|
|
511
511
|
type FieldRegleBehaviourOptions = AddDollarToOptions<RegleBehaviourOptions> & {
|
|
512
|
+
/**
|
|
513
|
+
* Let you declare the number of milliseconds the rule needs to wait before executing. Useful for async or heavy computations.
|
|
514
|
+
*/
|
|
512
515
|
$debounce?: number;
|
|
513
516
|
};
|
|
514
517
|
type ResolvedRegleBehaviourOptions = DeepMaybeRef<RequiredDeep<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Record<string, any>, Record<string, any>, Record<string, any[]>>;
|
|
@@ -516,8 +519,17 @@ type ShortcutCommonFn<T extends Record<string, any>> = {
|
|
|
516
519
|
[x: string]: (element: OmitByType<T, Function>) => unknown;
|
|
517
520
|
};
|
|
518
521
|
type RegleShortcutDefinition<TCustomRules extends Record<string, any> = {}> = {
|
|
522
|
+
/**
|
|
523
|
+
* Allow you to customize the properties of every single field
|
|
524
|
+
*/
|
|
519
525
|
fields?: ShortcutCommonFn<RegleFieldStatus<any, Partial<TCustomRules> & Partial<DefaultValidators>>>;
|
|
526
|
+
/**
|
|
527
|
+
* Allow you to customize the properties of every parent of a nested object
|
|
528
|
+
*/
|
|
520
529
|
nested?: ShortcutCommonFn<RegleStatus<Record<string, any>, ReglePartialRuleTree<any, Partial<TCustomRules> & Partial<DefaultValidators>>>>;
|
|
530
|
+
/**
|
|
531
|
+
* Allow you to customize the properties of every parent of a collection
|
|
532
|
+
*/
|
|
521
533
|
collections?: ShortcutCommonFn<RegleCollectionStatus<any[], Partial<TCustomRules> & Partial<DefaultValidators>>>;
|
|
522
534
|
};
|
|
523
535
|
type AddDollarToOptions<T extends Record<string, any>> = {
|
|
@@ -528,7 +540,7 @@ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends
|
|
|
528
540
|
/**
|
|
529
541
|
* r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display informations.
|
|
530
542
|
*
|
|
531
|
-
* To see the list of properties: {@link https://
|
|
543
|
+
* To see the list of properties: {@link https://reglejs.dev/core-concepts/validation-properties}
|
|
532
544
|
*/
|
|
533
545
|
r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
|
|
534
546
|
}
|
|
@@ -536,9 +548,10 @@ type isDeepExact<T, U> = {
|
|
|
536
548
|
[K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
|
|
537
549
|
}[keyof T] extends true ? true : false;
|
|
538
550
|
type CheckDeepExact<T, U> = [U] extends [never] ? false : T extends RegleCollectionRuleDecl ? U extends RegleCollectionRuleDecl ? isDeepExact<NonNullable<T['$each']>, UnionToIntersection$1<NonNullable<U['$each']>>> : T extends RegleRuleDecl ? true : T extends ReglePartialRuleTree<any> ? isDeepExact<T, U> : false : T extends RegleRuleDecl ? true : T extends ReglePartialRuleTree<any> ? isDeepExact<T, U> : false;
|
|
539
|
-
type DeepReactiveState<T extends Record<string, any
|
|
540
|
-
[K in keyof T]:
|
|
551
|
+
type DeepReactiveState<T extends Record<string, any> | undefined> = {
|
|
552
|
+
[K in keyof T]: InferDeepReactiveState<T[K]>;
|
|
541
553
|
};
|
|
554
|
+
type InferDeepReactiveState<TState> = NonNullable<TState> extends Array<infer U extends Record<string, any>> ? DeepReactiveState<U[]> : NonNullable<TState> extends Date | File ? MaybeRef<TState> : TState extends Record<string, any> | undefined ? DeepReactiveState<TState> : MaybeRef<TState>;
|
|
542
555
|
type DeepSafeFormState<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> | undefined> = [unknown] extends [TState] ? {} : TRules extends undefined ? TState : TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> ? Prettify<{
|
|
543
556
|
[K in keyof TState as IsPropertyOutputRequired<TState[K], TRules[K]> extends false ? K : never]?: SafeProperty<TState[K], TRules[K]>;
|
|
544
557
|
} & {
|
|
@@ -1581,7 +1594,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
1581
1594
|
/** Collection of status of every item in your collection. Each item will be a field you can access, or map on it to display your elements. */
|
|
1582
1595
|
readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, TShortcuts>>;
|
|
1583
1596
|
/** Represents the status of the collection itself. You can have validation rules on the array like minLength, this field represents the isolated status of the collection. */
|
|
1584
|
-
readonly $
|
|
1597
|
+
readonly $self: RegleFieldStatus<TState, TFieldRule, TShortcuts>;
|
|
1585
1598
|
/** Collection of all the error messages, collected for all children properties and nested forms.
|
|
1586
1599
|
*
|
|
1587
1600
|
* Only contains errors from properties where $dirty equals true. */
|
|
@@ -1600,7 +1613,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
1600
1613
|
* @reference {@link RegleCollectionStatus}
|
|
1601
1614
|
*/
|
|
1602
1615
|
interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fields' | '$errors' | '$silentErrors'> {
|
|
1603
|
-
readonly $
|
|
1616
|
+
readonly $self: $InternalRegleFieldStatus;
|
|
1604
1617
|
readonly $each: Array<$InternalRegleStatusType>;
|
|
1605
1618
|
readonly $errors: $InternalRegleCollectionErrors;
|
|
1606
1619
|
readonly $silentErrors: $InternalRegleCollectionErrors;
|
|
@@ -1675,4 +1688,4 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
1675
1688
|
inferRules: inferRulesFn<TCustomRules>;
|
|
1676
1689
|
};
|
|
1677
1690
|
|
|
1678
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
|
1691
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(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 H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function K(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function _e(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)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function ct(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 Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};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=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function We(){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),f=vue.shallowRef(new Map);function p(o){let s=t.value.get(o);if(s)return s;{let i=vue.ref({});return t.value.set(o,i),i}}function d(o){let s=r.value.get(o);if(s)return s;{let i=vue.ref([]);return r.value.set(o,i),i}}function m(o,s,i){f.value.set(`${o}-${s}`,i);}function $(o,s){return f.value.get(`${o}-${s}`)}function g(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function V(o,s){n.value.set(o,s);}function F(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function T(o,s){let i=e.value.get(o);return i?C(s,i)?{valid:!0}:{valid:!1}:void 0}function C(o,s){let i=Object.keys(s),G=Object.keys(o);return G.length!==i.length||!G.every(W=>i.includes(W))?!1:G.every(W=>{let w=o[W],b=s[W];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),k=J(w._params);return I?.[y]===k?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=vue.ref(!1),G=vue.ref(!0),z=vue.ref({}),W=vue.ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:W}),{$pending:i,$valid:G,$metadata:z,$validating:W}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:F,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:K(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 De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(vue.version,"3.5.0")!==-1;function Wt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Wt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||K(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&K(e.value)}function $e(e){return K(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return K(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({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 mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=vue.effectScope(),g={},V,F=vue.ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=vue.effectScope(),g=$.run(()=>{let b=vue.computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=vue.computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?c=S(b.value):c=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?c=r.value[u](b.value):c=r.value[u]??"");}return c}let I=vue.computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),k=vue.computed(()=>y("tooltip")),te=vue.computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=vue.computed(()=>ge(r)?r.value.validator:r.value),D=vue.computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=vue.computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:k}}),V=vue.watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function s(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;s();let k;if(y instanceof Promise?k=await y:k=y,l.value!==I)return !0;if(typeof k=="boolean")b=k;else {let{$valid:te,...ae}=k;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y 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(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...k}=y;b=I,C.value=k;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function W(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=vue.effectScope();}return vue.reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:F,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:W})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let F=vue.effectScope(),a,T=[],C,N,o,s,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([M])=>M.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,X])=>{if(X){let re=vue.toRef(()=>X);return [M,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:M,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function W(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),F.stop(),F=vue.effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=F.run(()=>{let v=vue.ref(!1),A=vue.ref(!1),M=vue.computed(()=>v.value),X=vue.computed(()=>I.value.$debounce),re=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):!1),h=vue.computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:vue.unref(p.rewardEarly)!=null?vue.unref(p.rewardEarly):!1),O=vue.computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:vue.unref(p.clearExternalErrorsOnChange)!=null?vue.unref(p.clearExternalErrorsOnChange):!0),E=vue.computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!h.value),_=vue.computed(()=>Object.entries(y.value).some(([Z,le])=>le.$validating)),ve=vue.computed({get:()=>e.value,set(Z){C(),e.value=Z,b();}}),Ae=vue.computed(()=>fe.value&&!me.value&&v.value),Qe=vue.computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),je=vue.computed(()=>v.value?Me(g.value)&&Me(e.value)?_e(g.value).getDate()!==_e(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=vue.computed(()=>je.value),Ze=vue.computed(()=>vt({field:{$rules:y.value}})),Ke=vue.computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=vue.computed(()=>E.value?M.value&&!(fe.value||me.value):!(fe.value||me.value)),me=vue.computed(()=>A.value||!h.value?Object.entries(y.value).some(([Z,le])=>le.$pending):!1),fe=vue.computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([Z,le])=>!le.$valid):!1),tt=vue.computed(()=>l),Fe=vue.computed(()=>!!L(y.value)),rt=vue.computed(()=>d?.value?.length||Fe.value?!1:v.value&&!L(e.value)&&!_.value?Object.values(y.value).every(Z=>Z.$valid&&Z.$active):!1),It=vue.computed(()=>Object.entries(y.value).some(([Z,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([Z,le])=>{let at=vue.effectScope();nt[Z]=at.run(()=>{let lt=vue.ref();return vue.watchEffect(()=>{lt.value=le(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:M,$tooltips:Ze,$name:tt,$inactive:Fe,$edited:je,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return vue.watch(fe,Z=>{Z||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:X,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:M,$edited:je,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:_,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Fe}}),b(),o=vue.watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=vue.watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),s=vue.watch(a.$haveAnyAsyncRule,z);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=vue.ref({}),I=vue.ref({});G();function k(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=K(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=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:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([X,re])=>re.$validate()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){W(),e.value=H(g),k();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:c,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:Q,$lazy:oe,...ce}=a;return vue.reactive({...ce,$externalErrors:d,$value:e,$rules:y,...c,$reset:k,$touch:te,$validate:ae,$unwatch:W,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let F=d.$key?d.$key:Ce(),a=`${t}.${String(F)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:F,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:vue.toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(F),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=vue.effectScope(),V,F=vue.effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=vue.ref(),N=vue.ref(e.value),o,s=vue.ref({}),i=l.getCollectionsEntry(n);a=F.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>$e(c)):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=s.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,c)=>{let{scope:S,unwrapped:R}=ke(t.value.$each,vue.toRef(()=>u),c);S&&T.push(S);let x=vue.toRef(d.value??[],c),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:vue.toRef(()=>u),index:c,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],s.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:vue.toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((c,S)=>{let R=vue.toRef(()=>c);if(c.$id&&i.value.find(x=>x.$id===c.$id)){let x=l.getArrayStatus(C.value,c.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=ke(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:vue.toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(S=>c.$id===S.$id)).forEach((c,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function W(){o=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){W(),g=vue.effectScope(),V=g.run(()=>{let u=vue.computed({get:()=>e.value,set(h){o(),e.value=h,W();}}),c=vue.computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=vue.computed(()=>s.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=vue.computed(()=>s.value.$invalid||i.value.some(h=>h.$invalid)),x=vue.computed(()=>(L(s.value.$rules)?!0:s.value.$valid)&&i.value.every(h=>h.$valid)),B=vue.computed(()=>s.value.$error||i.value.some(h=>h.$error)),ee=vue.computed(()=>!(R.value||Q.value)),Q=vue.computed(()=>s.value.$pending||i.value.some(h=>h.$pending)),oe=vue.computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=vue.computed(()=>s.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=vue.computed(()=>({$self:s.value.$errors,$each:i.value.map(h=>h.$errors)})),A=vue.computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),M=vue.computed(()=>$);function X(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=vue.effectScope();re[h]=E.run(()=>{let _=vue.ref();return vue.watchEffect(()=>{_.value=O(vue.reactive({$dirty:c,$error:B,$silentValue:u,$pending:Q,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:M,$each:i,$field:s,$value:e,$edited:oe,$anyEdited:ce}));}),_}),T.push(E);});}let re={};return X(),{$dirty:c,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:Q,$errors:v,$silentErrors:A,$ready:ee,$name:M,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(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`),o());}function b(){o&&o(),s.value&&s.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=vue.effectScope(),F.stop(),F=vue.effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(S=>{S.$touch(u,c);});}function y(){s.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([s.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function k(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let c=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&c.every(S=>L(S))&&(c=[]),c}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return vue.reactive({$field:s,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:k})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=vue.effectScope(),g,V=[],F=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=vue.toRef(t.value,R),ee=vue.toRef(()=>x),Q=vue.toRef(l?.value??{},R),oe=vue.toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:Q,initialState:oe,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=vue.toRef(t.value,R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let x=vue.toRef(t.value,R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...c,...S},D&&W();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=vue.watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=vue.watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function W(){n&&(F?.(),F=vue.watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=vue.effectScope(),g=$.run(()=>{let D=vue.computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),c=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=vue.computed(()=>{let O=Object.entries(o.value).filter(([E,_])=>yt(_)?!_.$inactive:!0);return O.length?O.every(([E,_])=>_?.$valid):!1}),R=vue.computed(()=>u.value&&!Q.value&&c.value),x=vue.computed(()=>vue.unref(m.options.rewardEarly)!=null?vue.unref(m.options.rewardEarly):!1),B=vue.computed(()=>vue.unref(m.options.autoDirty)!=null?vue.unref(m.options.autoDirty):!x.value),ee=vue.computed(()=>B.value?u.value&&!(c.value||Q.value):!(c.value||Q.value)),Q=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),M=vue.computed(()=>d);function X(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let _=vue.effectScope();h[O]=_.run(()=>{let ve=vue.ref();return vue.watchEffect(()=>{ve.value=E(vue.reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:Q,$invalid:c,$valid:S,$ready:ee,$anyDirty:u,$name:M,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(_);});}let re=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(_=>[_,ut(E,_)])),...Object.fromEntries(["$errors","$silentErrors"].map(_=>[_,it(E,_)]))}]:[])):{},set(){}}),h={};return X(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:S,$error:R,$pending:Q,$errors:oe,$silentErrors:ce,$ready:ee,$name:M,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){F?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),s(),N();}function y(D){return D.filter(([P,u])=>K(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function k(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(c=>c.$validate()))).every(c=>c.status==="fulfilled"?c.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return vue.reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:s,$touch:i,$validate:k,$unwatch:w,$watch:W,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=vue.ref({}),l=vue.watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=We(),d=vue.ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{d.value?.$unwatch();}),vue.reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),$={...n,...d},g=vue.isRef(f)?f:vue.ref(f),V=vue.ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
|
|
1
|
+
'use strict';var vue=require('vue');function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(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 H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function Q(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function _e(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)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function ct(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 Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};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=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function We(){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),f=vue.shallowRef(new Map);function p(o){let c=t.value.get(o);if(c)return c;{let i=vue.ref({});return t.value.set(o,i),i}}function d(o){let c=r.value.get(o);if(c)return c;{let i=vue.ref([]);return r.value.set(o,i),i}}function m(o,c,i){f.value.set(`${o}-${c}`,i);}function $(o,c){return f.value.get(`${o}-${c}`)}function g(o,c){o&&c!=null&&f.value.delete(`${o}-${c}`);}function V(o,c){n.value.set(o,c);}function F(o){return n.value.get(o)??!1}function a(o,c){e.value.set(o,c);}function T(o,c){let i=e.value.get(o);return i?C(c,i)?{valid:!0}:{valid:!1}:void 0}function C(o,c){let i=Object.keys(c),G=Object.keys(o);return G.length!==i.length||!G.every(W=>i.includes(W))?!1:G.every(W=>{let w=o[W],b=c[W];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),k=J(w._params);return I?.[y]===k?.[y]}}):!0})}function N(o){let c=l.value.get(o);if(c)return c;{let i=vue.ref(!1),G=vue.ref(!0),z=vue.ref({}),W=vue.ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:W}),{$pending:i,$valid:G,$metadata:z,$validating:W}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:F,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:Q(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 De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(vue.version,"3.5.0")!==-1;function Wt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Wt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||Q(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&Q(e.value)}function $e(e){return Q(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return Q(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({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 mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=vue.effectScope(),g={},V,F=vue.ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=vue.effectScope(),g=$.run(()=>{let b=vue.computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=vue.computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let s="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?s=S(b.value):s=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?s=r.value[u](b.value):s=r.value[u]??"");}return s}let I=vue.computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),k=vue.computed(()=>y("tooltip")),te=vue.computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=vue.computed(()=>ge(r)?r.value.validator:r.value),D=vue.computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=vue.computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:k}}),V=vue.watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function c(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;c();let k;if(y instanceof Promise?k=await y:k=y,l.value!==I)return !0;if(typeof k=="boolean")b=k;else {let{$valid:te,...ae}=k;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y 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(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...k}=y;b=I,C.value=k;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function W(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=vue.effectScope();}return vue.reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:F,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:W})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let F=vue.effectScope(),a,T=[],C,N,o,c,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([M])=>M.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,Z])=>{if(Z){let re=vue.toRef(()=>Z);return [M,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:M,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function W(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),F.stop(),F=vue.effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),c?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=F.run(()=>{let v=vue.ref(!1),A=vue.ref(!1),M=vue.computed(()=>v.value),Z=vue.computed(()=>I.value.$debounce),re=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):!1),h=vue.computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:vue.unref(p.rewardEarly)!=null?vue.unref(p.rewardEarly):!1),O=vue.computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:vue.unref(p.clearExternalErrorsOnChange)!=null?vue.unref(p.clearExternalErrorsOnChange):!0),E=vue.computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!h.value),_=vue.computed(()=>Object.entries(y.value).some(([K,le])=>le.$validating)),ve=vue.computed({get:()=>e.value,set(K){C(),e.value=K,b();}}),Ae=vue.computed(()=>fe.value&&!me.value&&v.value),Qe=vue.computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),je=vue.computed(()=>v.value?Me(g.value)&&Me(e.value)?_e(g.value).getDate()!==_e(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=vue.computed(()=>je.value),Ze=vue.computed(()=>vt({field:{$rules:y.value}})),Ke=vue.computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=vue.computed(()=>E.value?M.value&&!(fe.value||me.value):!(fe.value||me.value)),me=vue.computed(()=>A.value||!h.value?Object.entries(y.value).some(([K,le])=>le.$pending):!1),fe=vue.computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([K,le])=>!le.$valid):!1),tt=vue.computed(()=>l),Fe=vue.computed(()=>!!L(y.value)),rt=vue.computed(()=>d?.value?.length||Fe.value?!1:v.value&&!L(e.value)&&!_.value?Object.values(y.value).every(K=>K.$valid&&K.$active):!1),It=vue.computed(()=>Object.entries(y.value).some(([K,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([K,le])=>{let at=vue.effectScope();nt[K]=at.run(()=>{let lt=vue.ref();return vue.watchEffect(()=>{lt.value=le(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:M,$tooltips:Ze,$name:tt,$inactive:Fe,$edited:je,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return vue.watch(fe,K=>{K||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:Z,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:M,$edited:je,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:_,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Fe}}),b(),o=vue.watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=vue.watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),c=vue.watch(a.$haveAnyAsyncRule,z);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0,flush:"post"});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=vue.ref({}),I=vue.ref({});G();function k(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=Q(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=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:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([Z,re])=>re.$validate()))).every(Z=>Z.status==="fulfilled"?Z.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){W(),e.value=H(g),k();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:s,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:X,$lazy:oe,...ce}=a;return vue.reactive({...ce,$externalErrors:d,$value:e,$rules:y,...s,$reset:k,$touch:te,$validate:ae,$unwatch:W,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let F=d.$key?d.$key:Ce(),a=`${t}.${String(F)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:F,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:vue.toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(F),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=vue.effectScope(),V,F=vue.effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=vue.ref(),N=vue.ref(e.value),o,c=vue.ref({}),i=l.getCollectionsEntry(n);a=F.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(s=>typeof s!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(s=>$e(s)||typeof s=="function"):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=c.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,s)=>{let{scope:S,unwrapped:R}=ke(t.value.$each,vue.toRef(()=>u),s);S&&T.push(S);let x=vue.toRef(d.value??[],s),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:vue.toRef(()=>u),index:s,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],c.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:vue.toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((s,S)=>{let R=vue.toRef(()=>s);if(s.$id&&i.value.find(x=>x.$id===s.$id)){let x=l.getArrayStatus(C.value,s.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=ke(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:vue.toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(s=>!!s),u.filter(s=>!e.value.find(S=>s.$id===S.$id)).forEach((s,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function W(){o=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){W(),g=vue.effectScope(),V=g.run(()=>{let u=vue.computed({get:()=>e.value,set(h){o(),e.value=h,W();}}),s=vue.computed(()=>c.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=vue.computed(()=>c.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=vue.computed(()=>c.value.$invalid||i.value.some(h=>h.$invalid)),x=vue.computed(()=>(L(c.value.$rules)?!0:c.value.$valid)&&i.value.every(h=>h.$valid)),B=vue.computed(()=>c.value.$error||i.value.some(h=>h.$error)),ee=vue.computed(()=>!(R.value||X.value)),X=vue.computed(()=>c.value.$pending||i.value.some(h=>h.$pending)),oe=vue.computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=vue.computed(()=>c.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=vue.computed(()=>({$self:c.value.$errors,$each:i.value.map(h=>h.$errors)})),A=vue.computed(()=>({$self:c.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),M=vue.computed(()=>$);function Z(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=vue.effectScope();re[h]=E.run(()=>{let _=vue.ref();return vue.watchEffect(()=>{_.value=O(vue.reactive({$dirty:s,$error:B,$silentValue:u,$pending:X,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:M,$each:i,$self:c,$value:e,$edited:oe,$anyEdited:ce}));}),_}),T.push(E);});}let re={};return Z(),{$dirty:s,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:X,$errors:v,$silentErrors:A,$ready:ee,$name:M,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(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`),o());}function b(){o&&o(),c.value&&c.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=vue.effectScope(),F.stop(),F=vue.effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,s=!1){c.value.$touch(u,s),i.value.forEach(S=>{S.$touch(u,s);});}function y(){c.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([c.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function k(){c.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let s=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&s.every(S=>L(S))&&(s=[]),s}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return vue.reactive({$self:c,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:k})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=vue.effectScope(),g,V=[],F=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=vue.toRef(t.value??{},R),ee=vue.toRef(()=>x),X=vue.toRef(l?.value??{},R),oe=vue.toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:X,initialState:oe,fieldName:R,...m})]}return []})),s=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=vue.toRef(t.value??{},R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(s.value??{}))).map(([R])=>{let x=vue.toRef(t.value??{},R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...s,...S},D&&W();}let o=m.storage.getFieldsEntry(r);N();function c(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=vue.watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=vue.watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function W(){n&&(F?.(),F=vue.watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=vue.effectScope(),g=$.run(()=>{let D=vue.computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),s=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=vue.computed(()=>{let O=Object.entries(o.value).filter(([E,_])=>yt(_)?!_.$inactive:!0);return O.length?O.every(([E,_])=>_?.$valid):!1}),R=vue.computed(()=>u.value&&!X.value&&s.value),x=vue.computed(()=>vue.unref(m.options.rewardEarly)!=null?vue.unref(m.options.rewardEarly):!1),B=vue.computed(()=>vue.unref(m.options.autoDirty)!=null?vue.unref(m.options.autoDirty):!x.value),ee=vue.computed(()=>B.value?u.value&&!(s.value||X.value):!(s.value||X.value)),X=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),M=vue.computed(()=>d);function Z(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let _=vue.effectScope();h[O]=_.run(()=>{let ve=vue.ref();return vue.watchEffect(()=>{ve.value=E(vue.reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:X,$invalid:s,$valid:S,$ready:ee,$anyDirty:u,$name:M,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(_);});}let re=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(_=>[_,ut(E,_)])),...Object.fromEntries(["$errors","$silentErrors"].map(_=>[_,it(E,_)]))}]:[])):{},set(){}}),h={};return Z(),{$dirty:P,$anyDirty:u,$invalid:s,$valid:S,$error:R,$pending:X,$errors:oe,$silentErrors:ce,$ready:ee,$name:M,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){F?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),c(),N();}function y(D){return D.filter(([P,u])=>Q(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,s])=>[u,s.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function k(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return vue.reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:c,$touch:i,$validate:k,$unwatch:w,$watch:W,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=vue.ref({}),l=vue.watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=We(),d=vue.ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{d.value?.$unwatch();}),vue.reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),$={...n,...d},g=vue.isRef(f)?f:vue.ref(f),V=vue.ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
|
|
2
2
|
exports.InternalRuleType=Ve;exports.createRule=Ge;exports.defineRegleConfig=Ct;exports.inferRules=Ye;exports.unwrapRuleParameters=J;exports.useRegle=xt;exports.useRootStorage=ye;
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,shallowRef,effectScope,computed,isRef,toRef,unref,watch,watchEffect}from'vue';function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(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 H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function K(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function _e(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)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function ct(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 Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};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=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function We(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),f=shallowRef(new Map);function p(o){let s=t.value.get(o);if(s)return s;{let i=ref({});return t.value.set(o,i),i}}function d(o){let s=r.value.get(o);if(s)return s;{let i=ref([]);return r.value.set(o,i),i}}function m(o,s,i){f.value.set(`${o}-${s}`,i);}function $(o,s){return f.value.get(`${o}-${s}`)}function g(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function V(o,s){n.value.set(o,s);}function F(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function T(o,s){let i=e.value.get(o);return i?C(s,i)?{valid:!0}:{valid:!1}:void 0}function C(o,s){let i=Object.keys(s),G=Object.keys(o);return G.length!==i.length||!G.every(W=>i.includes(W))?!1:G.every(W=>{let w=o[W],b=s[W];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),k=J(w._params);return I?.[y]===k?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=ref(!1),G=ref(!0),z=ref({}),W=ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:W}),{$pending:i,$valid:G,$metadata:z,$validating:W}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:F,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:K(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 De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(version,"3.5.0")!==-1;function Wt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Wt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||K(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&K(e.value)}function $e(e){return K(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return K(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({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 mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=effectScope(),g={},V,F=ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=effectScope(),g=$.run(()=>{let b=computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?c=S(b.value):c=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?c=r.value[u](b.value):c=r.value[u]??"");}return c}let I=computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),k=computed(()=>y("tooltip")),te=computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=computed(()=>ge(r)?r.value.validator:r.value),D=computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:k}}),V=watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function s(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;s();let k;if(y instanceof Promise?k=await y:k=y,l.value!==I)return !0;if(typeof k=="boolean")b=k;else {let{$valid:te,...ae}=k;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y 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(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...k}=y;b=I,C.value=k;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function W(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=effectScope();}return reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:F,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:W})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let F=effectScope(),a,T=[],C,N,o,s,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([M])=>M.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,X])=>{if(X){let re=toRef(()=>X);return [M,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:M,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function W(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),F.stop(),F=effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=F.run(()=>{let v=ref(!1),A=ref(!1),M=computed(()=>v.value),X=computed(()=>I.value.$debounce),re=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):!1),h=computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:unref(p.rewardEarly)!=null?unref(p.rewardEarly):!1),O=computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:unref(p.clearExternalErrorsOnChange)!=null?unref(p.clearExternalErrorsOnChange):!0),E=computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!h.value),_=computed(()=>Object.entries(y.value).some(([Z,le])=>le.$validating)),ve=computed({get:()=>e.value,set(Z){C(),e.value=Z,b();}}),Ae=computed(()=>fe.value&&!me.value&&v.value),Qe=computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),je=computed(()=>v.value?Me(g.value)&&Me(e.value)?_e(g.value).getDate()!==_e(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=computed(()=>je.value),Ze=computed(()=>vt({field:{$rules:y.value}})),Ke=computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=computed(()=>E.value?M.value&&!(fe.value||me.value):!(fe.value||me.value)),me=computed(()=>A.value||!h.value?Object.entries(y.value).some(([Z,le])=>le.$pending):!1),fe=computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([Z,le])=>!le.$valid):!1),tt=computed(()=>l),Fe=computed(()=>!!L(y.value)),rt=computed(()=>d?.value?.length||Fe.value?!1:v.value&&!L(e.value)&&!_.value?Object.values(y.value).every(Z=>Z.$valid&&Z.$active):!1),It=computed(()=>Object.entries(y.value).some(([Z,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([Z,le])=>{let at=effectScope();nt[Z]=at.run(()=>{let lt=ref();return watchEffect(()=>{lt.value=le(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:M,$tooltips:Ze,$name:tt,$inactive:Fe,$edited:je,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return watch(fe,Z=>{Z||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:X,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:M,$edited:je,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:_,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Fe}}),b(),o=watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),s=watch(a.$haveAnyAsyncRule,z);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=ref({}),I=ref({});G();function k(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=K(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=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:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([X,re])=>re.$validate()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){W(),e.value=H(g),k();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:c,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:Q,$lazy:oe,...ce}=a;return reactive({...ce,$externalErrors:d,$value:e,$rules:y,...c,$reset:k,$touch:te,$validate:ae,$unwatch:W,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let F=d.$key?d.$key:Ce(),a=`${t}.${String(F)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:F,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(F),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=effectScope(),V,F=effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=ref(),N=ref(e.value),o,s=ref({}),i=l.getCollectionsEntry(n);a=F.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>$e(c)):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=s.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,c)=>{let{scope:S,unwrapped:R}=ke(t.value.$each,toRef(()=>u),c);S&&T.push(S);let x=toRef(d.value??[],c),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:toRef(()=>u),index:c,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],s.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((c,S)=>{let R=toRef(()=>c);if(c.$id&&i.value.find(x=>x.$id===c.$id)){let x=l.getArrayStatus(C.value,c.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=ke(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(S=>c.$id===S.$id)).forEach((c,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function W(){o=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){W(),g=effectScope(),V=g.run(()=>{let u=computed({get:()=>e.value,set(h){o(),e.value=h,W();}}),c=computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=computed(()=>s.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=computed(()=>s.value.$invalid||i.value.some(h=>h.$invalid)),x=computed(()=>(L(s.value.$rules)?!0:s.value.$valid)&&i.value.every(h=>h.$valid)),B=computed(()=>s.value.$error||i.value.some(h=>h.$error)),ee=computed(()=>!(R.value||Q.value)),Q=computed(()=>s.value.$pending||i.value.some(h=>h.$pending)),oe=computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=computed(()=>s.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=computed(()=>({$self:s.value.$errors,$each:i.value.map(h=>h.$errors)})),A=computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),M=computed(()=>$);function X(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=effectScope();re[h]=E.run(()=>{let _=ref();return watchEffect(()=>{_.value=O(reactive({$dirty:c,$error:B,$silentValue:u,$pending:Q,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:M,$each:i,$field:s,$value:e,$edited:oe,$anyEdited:ce}));}),_}),T.push(E);});}let re={};return X(),{$dirty:c,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:Q,$errors:v,$silentErrors:A,$ready:ee,$name:M,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(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`),o());}function b(){o&&o(),s.value&&s.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=effectScope(),F.stop(),F=effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(S=>{S.$touch(u,c);});}function y(){s.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([s.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function k(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let c=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&c.every(S=>L(S))&&(c=[]),c}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return reactive({$field:s,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:k})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=effectScope(),g,V=[],F=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=toRef(t.value,R),ee=toRef(()=>x),Q=toRef(l?.value??{},R),oe=toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:Q,initialState:oe,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=toRef(t.value,R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let x=toRef(t.value,R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...c,...S},D&&W();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function W(){n&&(F?.(),F=watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=effectScope(),g=$.run(()=>{let D=computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),c=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=computed(()=>{let O=Object.entries(o.value).filter(([E,_])=>yt(_)?!_.$inactive:!0);return O.length?O.every(([E,_])=>_?.$valid):!1}),R=computed(()=>u.value&&!Q.value&&c.value),x=computed(()=>unref(m.options.rewardEarly)!=null?unref(m.options.rewardEarly):!1),B=computed(()=>unref(m.options.autoDirty)!=null?unref(m.options.autoDirty):!x.value),ee=computed(()=>B.value?u.value&&!(c.value||Q.value):!(c.value||Q.value)),Q=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),M=computed(()=>d);function X(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let _=effectScope();h[O]=_.run(()=>{let ve=ref();return watchEffect(()=>{ve.value=E(reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:Q,$invalid:c,$valid:S,$ready:ee,$anyDirty:u,$name:M,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(_);});}let re=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(_=>[_,ut(E,_)])),...Object.fromEntries(["$errors","$silentErrors"].map(_=>[_,it(E,_)]))}]:[])):{},set(){}}),h={};return X(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:S,$error:R,$pending:Q,$errors:oe,$silentErrors:ce,$ready:ee,$name:M,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){F?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),s(),N();}function y(D){return D.filter(([P,u])=>K(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function k(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(c=>c.$validate()))).every(c=>c.status==="fulfilled"?c.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:s,$touch:i,$validate:k,$unwatch:w,$watch:W,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=ref({}),l=watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=We(),d=ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=isRef(p)?p:computed(typeof p=="function"?p:()=>p),$={...n,...d},g=isRef(f)?f:ref(f),V=ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
|
|
1
|
+
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,shallowRef,effectScope,computed,isRef,toRef,unref,watch,watchEffect}from'vue';function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(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 H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function Q(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function _e(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)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function ct(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 Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};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=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function We(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),f=shallowRef(new Map);function p(o){let c=t.value.get(o);if(c)return c;{let i=ref({});return t.value.set(o,i),i}}function d(o){let c=r.value.get(o);if(c)return c;{let i=ref([]);return r.value.set(o,i),i}}function m(o,c,i){f.value.set(`${o}-${c}`,i);}function $(o,c){return f.value.get(`${o}-${c}`)}function g(o,c){o&&c!=null&&f.value.delete(`${o}-${c}`);}function V(o,c){n.value.set(o,c);}function F(o){return n.value.get(o)??!1}function a(o,c){e.value.set(o,c);}function T(o,c){let i=e.value.get(o);return i?C(c,i)?{valid:!0}:{valid:!1}:void 0}function C(o,c){let i=Object.keys(c),G=Object.keys(o);return G.length!==i.length||!G.every(W=>i.includes(W))?!1:G.every(W=>{let w=o[W],b=c[W];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),k=J(w._params);return I?.[y]===k?.[y]}}):!0})}function N(o){let c=l.value.get(o);if(c)return c;{let i=ref(!1),G=ref(!0),z=ref({}),W=ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:W}),{$pending:i,$valid:G,$metadata:z,$validating:W}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:F,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:Q(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 De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(version,"3.5.0")!==-1;function Wt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Wt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||Q(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&Q(e.value)}function $e(e){return Q(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return Q(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({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 mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=effectScope(),g={},V,F=ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=effectScope(),g=$.run(()=>{let b=computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let s="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?s=S(b.value):s=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?s=r.value[u](b.value):s=r.value[u]??"");}return s}let I=computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),k=computed(()=>y("tooltip")),te=computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=computed(()=>ge(r)?r.value.validator:r.value),D=computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:k}}),V=watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function c(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;c();let k;if(y instanceof Promise?k=await y:k=y,l.value!==I)return !0;if(typeof k=="boolean")b=k;else {let{$valid:te,...ae}=k;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y 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(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...k}=y;b=I,C.value=k;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function W(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=effectScope();}return reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:F,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:W})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let F=effectScope(),a,T=[],C,N,o,c,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([M])=>M.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,Z])=>{if(Z){let re=toRef(()=>Z);return [M,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:M,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function W(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),F.stop(),F=effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),c?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=F.run(()=>{let v=ref(!1),A=ref(!1),M=computed(()=>v.value),Z=computed(()=>I.value.$debounce),re=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):!1),h=computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:unref(p.rewardEarly)!=null?unref(p.rewardEarly):!1),O=computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:unref(p.clearExternalErrorsOnChange)!=null?unref(p.clearExternalErrorsOnChange):!0),E=computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!h.value),_=computed(()=>Object.entries(y.value).some(([K,le])=>le.$validating)),ve=computed({get:()=>e.value,set(K){C(),e.value=K,b();}}),Ae=computed(()=>fe.value&&!me.value&&v.value),Qe=computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),je=computed(()=>v.value?Me(g.value)&&Me(e.value)?_e(g.value).getDate()!==_e(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=computed(()=>je.value),Ze=computed(()=>vt({field:{$rules:y.value}})),Ke=computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=computed(()=>E.value?M.value&&!(fe.value||me.value):!(fe.value||me.value)),me=computed(()=>A.value||!h.value?Object.entries(y.value).some(([K,le])=>le.$pending):!1),fe=computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([K,le])=>!le.$valid):!1),tt=computed(()=>l),Fe=computed(()=>!!L(y.value)),rt=computed(()=>d?.value?.length||Fe.value?!1:v.value&&!L(e.value)&&!_.value?Object.values(y.value).every(K=>K.$valid&&K.$active):!1),It=computed(()=>Object.entries(y.value).some(([K,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([K,le])=>{let at=effectScope();nt[K]=at.run(()=>{let lt=ref();return watchEffect(()=>{lt.value=le(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:M,$tooltips:Ze,$name:tt,$inactive:Fe,$edited:je,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return watch(fe,K=>{K||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:Z,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:M,$edited:je,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:_,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Fe}}),b(),o=watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),c=watch(a.$haveAnyAsyncRule,z);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0,flush:"post"});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=ref({}),I=ref({});G();function k(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=Q(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=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:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([Z,re])=>re.$validate()))).every(Z=>Z.status==="fulfilled"?Z.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){W(),e.value=H(g),k();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:s,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:X,$lazy:oe,...ce}=a;return reactive({...ce,$externalErrors:d,$value:e,$rules:y,...s,$reset:k,$touch:te,$validate:ae,$unwatch:W,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let F=d.$key?d.$key:Ce(),a=`${t}.${String(F)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:F,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(F),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=effectScope(),V,F=effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=ref(),N=ref(e.value),o,c=ref({}),i=l.getCollectionsEntry(n);a=F.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(s=>typeof s!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(s=>$e(s)||typeof s=="function"):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=c.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,s)=>{let{scope:S,unwrapped:R}=ke(t.value.$each,toRef(()=>u),s);S&&T.push(S);let x=toRef(d.value??[],s),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:toRef(()=>u),index:s,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],c.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((s,S)=>{let R=toRef(()=>s);if(s.$id&&i.value.find(x=>x.$id===s.$id)){let x=l.getArrayStatus(C.value,s.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=ke(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(s=>!!s),u.filter(s=>!e.value.find(S=>s.$id===S.$id)).forEach((s,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function W(){o=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){W(),g=effectScope(),V=g.run(()=>{let u=computed({get:()=>e.value,set(h){o(),e.value=h,W();}}),s=computed(()=>c.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=computed(()=>c.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=computed(()=>c.value.$invalid||i.value.some(h=>h.$invalid)),x=computed(()=>(L(c.value.$rules)?!0:c.value.$valid)&&i.value.every(h=>h.$valid)),B=computed(()=>c.value.$error||i.value.some(h=>h.$error)),ee=computed(()=>!(R.value||X.value)),X=computed(()=>c.value.$pending||i.value.some(h=>h.$pending)),oe=computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=computed(()=>c.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=computed(()=>({$self:c.value.$errors,$each:i.value.map(h=>h.$errors)})),A=computed(()=>({$self:c.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),M=computed(()=>$);function Z(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=effectScope();re[h]=E.run(()=>{let _=ref();return watchEffect(()=>{_.value=O(reactive({$dirty:s,$error:B,$silentValue:u,$pending:X,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:M,$each:i,$self:c,$value:e,$edited:oe,$anyEdited:ce}));}),_}),T.push(E);});}let re={};return Z(),{$dirty:s,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:X,$errors:v,$silentErrors:A,$ready:ee,$name:M,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(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`),o());}function b(){o&&o(),c.value&&c.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=effectScope(),F.stop(),F=effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,s=!1){c.value.$touch(u,s),i.value.forEach(S=>{S.$touch(u,s);});}function y(){c.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([c.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function k(){c.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let s=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&s.every(S=>L(S))&&(s=[]),s}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return reactive({$self:c,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:k})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=effectScope(),g,V=[],F=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=toRef(t.value??{},R),ee=toRef(()=>x),X=toRef(l?.value??{},R),oe=toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:X,initialState:oe,fieldName:R,...m})]}return []})),s=Object.fromEntries(Object.entries(unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=toRef(t.value??{},R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(s.value??{}))).map(([R])=>{let x=toRef(t.value??{},R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...s,...S},D&&W();}let o=m.storage.getFieldsEntry(r);N();function c(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function W(){n&&(F?.(),F=watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=effectScope(),g=$.run(()=>{let D=computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),s=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=computed(()=>{let O=Object.entries(o.value).filter(([E,_])=>yt(_)?!_.$inactive:!0);return O.length?O.every(([E,_])=>_?.$valid):!1}),R=computed(()=>u.value&&!X.value&&s.value),x=computed(()=>unref(m.options.rewardEarly)!=null?unref(m.options.rewardEarly):!1),B=computed(()=>unref(m.options.autoDirty)!=null?unref(m.options.autoDirty):!x.value),ee=computed(()=>B.value?u.value&&!(s.value||X.value):!(s.value||X.value)),X=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),M=computed(()=>d);function Z(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let _=effectScope();h[O]=_.run(()=>{let ve=ref();return watchEffect(()=>{ve.value=E(reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:X,$invalid:s,$valid:S,$ready:ee,$anyDirty:u,$name:M,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(_);});}let re=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(_=>[_,ut(E,_)])),...Object.fromEntries(["$errors","$silentErrors"].map(_=>[_,it(E,_)]))}]:[])):{},set(){}}),h={};return Z(),{$dirty:P,$anyDirty:u,$invalid:s,$valid:S,$error:R,$pending:X,$errors:oe,$silentErrors:ce,$ready:ee,$name:M,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){F?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),c(),N();}function y(D){return D.filter(([P,u])=>Q(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,s])=>[u,s.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function k(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:c,$touch:i,$validate:k,$unwatch:w,$watch:W,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=ref({}),l=watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=We(),d=ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=isRef(p)?p:computed(typeof p=="function"?p:()=>p),$={...n,...d},g=isRef(f)?f:ref(f),V=ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
|
|
2
2
|
export{Ve as InternalRuleType,Ge as createRule,Ct as defineRegleConfig,Ye as inferRules,J as unwrapRuleParameters,xt as useRegle,ye as useRootStorage};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -448,7 +448,7 @@ function isNestedRulesDef(state, rules) {
|
|
|
448
448
|
return isRefObject(state) || isObject(rules.value) && !isEmpty(rules.value) && !Object.entries(rules.value).some(([key, rule]) => isRuleDef(rule) || typeof rule === "function");
|
|
449
449
|
}
|
|
450
450
|
function isCollectionRulesDef(rules, state) {
|
|
451
|
-
return !!rules.value && "$each" in rules.value || Array.isArray(state.value);
|
|
451
|
+
return !!rules.value && isObject(rules.value) && "$each" in rules.value || Array.isArray(state.value);
|
|
452
452
|
}
|
|
453
453
|
function isValidatorRulesDef(rules) {
|
|
454
454
|
return !!rules.value && isObject(rules.value);
|
|
@@ -930,7 +930,7 @@ function createReactiveFieldStatus({
|
|
|
930
930
|
} else if (isEmpty($rules.value)) {
|
|
931
931
|
return false;
|
|
932
932
|
} else if (!$rewardEarly2.value || $rewardEarly2.value && triggerPunishment.value) {
|
|
933
|
-
return Object.entries($rules.value).some(([
|
|
933
|
+
return Object.entries($rules.value).some(([_, ruleResult]) => {
|
|
934
934
|
return !ruleResult.$valid;
|
|
935
935
|
});
|
|
936
936
|
}
|
|
@@ -1060,7 +1060,7 @@ function createReactiveFieldStatus({
|
|
|
1060
1060
|
$clearExternalErrors();
|
|
1061
1061
|
}
|
|
1062
1062
|
},
|
|
1063
|
-
{ deep: $isArray ? true : isVueSuperiorOrEqualTo3dotFive ? 1 : true }
|
|
1063
|
+
{ deep: $isArray ? true : isVueSuperiorOrEqualTo3dotFive ? 1 : true, flush: "post" }
|
|
1064
1064
|
);
|
|
1065
1065
|
}
|
|
1066
1066
|
function $commitHandler() {
|
|
@@ -1250,14 +1250,14 @@ function createReactiveCollectionStatus({
|
|
|
1250
1250
|
const $id = ref();
|
|
1251
1251
|
const $value = ref(state.value);
|
|
1252
1252
|
let $unwatchState;
|
|
1253
|
-
const $
|
|
1253
|
+
const $selfStatus = ref({});
|
|
1254
1254
|
const $eachStatus = storage.getCollectionsEntry(path);
|
|
1255
1255
|
immediateScopeState = immediateScope.run(() => {
|
|
1256
1256
|
const isPrimitiveArray = computed(() => {
|
|
1257
1257
|
if (Array.isArray(state.value) && state.value.length) {
|
|
1258
|
-
return state.value.
|
|
1258
|
+
return state.value.every((s) => typeof s !== "object");
|
|
1259
1259
|
} else if (rulesDef.value.$each && !(rulesDef.value.$each instanceof Function)) {
|
|
1260
|
-
return Object.values(rulesDef.value.$each).every((rule) => isRuleDef(rule));
|
|
1260
|
+
return Object.values(rulesDef.value.$each).every((rule) => isRuleDef(rule) || typeof rule === "function");
|
|
1261
1261
|
}
|
|
1262
1262
|
return false;
|
|
1263
1263
|
});
|
|
@@ -1286,7 +1286,7 @@ function createReactiveCollectionStatus({
|
|
|
1286
1286
|
if (immediateScopeState.isPrimitiveArray.value) {
|
|
1287
1287
|
return;
|
|
1288
1288
|
}
|
|
1289
|
-
$value.value = $
|
|
1289
|
+
$value.value = $selfStatus.value.$value;
|
|
1290
1290
|
if (Array.isArray(state.value)) {
|
|
1291
1291
|
$eachStatus.value = state.value.map((value, index) => {
|
|
1292
1292
|
const { scope: scope2, unwrapped } = unwrapGetter(
|
|
@@ -1320,7 +1320,7 @@ function createReactiveCollectionStatus({
|
|
|
1320
1320
|
} else {
|
|
1321
1321
|
$eachStatus.value = [];
|
|
1322
1322
|
}
|
|
1323
|
-
$
|
|
1323
|
+
$selfStatus.value = createReactiveFieldStatus({
|
|
1324
1324
|
state,
|
|
1325
1325
|
rulesDef,
|
|
1326
1326
|
customMessages,
|
|
@@ -1406,27 +1406,27 @@ function createReactiveCollectionStatus({
|
|
|
1406
1406
|
}
|
|
1407
1407
|
});
|
|
1408
1408
|
const $dirty = computed(() => {
|
|
1409
|
-
return $
|
|
1409
|
+
return $selfStatus.value.$dirty && !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
|
|
1410
1410
|
return statusOrField.$dirty;
|
|
1411
1411
|
});
|
|
1412
1412
|
});
|
|
1413
1413
|
const $anyDirty = computed(() => {
|
|
1414
|
-
return $
|
|
1414
|
+
return $selfStatus.value.$anyDirty || $eachStatus.value.some((statusOrField) => {
|
|
1415
1415
|
return statusOrField.$anyDirty;
|
|
1416
1416
|
});
|
|
1417
1417
|
});
|
|
1418
1418
|
const $invalid = computed(() => {
|
|
1419
|
-
return $
|
|
1419
|
+
return $selfStatus.value.$invalid || $eachStatus.value.some((statusOrField) => {
|
|
1420
1420
|
return statusOrField.$invalid;
|
|
1421
1421
|
});
|
|
1422
1422
|
});
|
|
1423
1423
|
const $valid = computed(() => {
|
|
1424
|
-
return (isEmpty($
|
|
1424
|
+
return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$valid) && $eachStatus.value.every((statusOrField) => {
|
|
1425
1425
|
return statusOrField.$valid;
|
|
1426
1426
|
});
|
|
1427
1427
|
});
|
|
1428
1428
|
const $error = computed(() => {
|
|
1429
|
-
return $
|
|
1429
|
+
return $selfStatus.value.$error || $eachStatus.value.some((statusOrField) => {
|
|
1430
1430
|
return statusOrField.$error;
|
|
1431
1431
|
});
|
|
1432
1432
|
});
|
|
@@ -1434,7 +1434,7 @@ function createReactiveCollectionStatus({
|
|
|
1434
1434
|
return !($invalid.value || $pending.value);
|
|
1435
1435
|
});
|
|
1436
1436
|
const $pending = computed(() => {
|
|
1437
|
-
return $
|
|
1437
|
+
return $selfStatus.value.$pending || $eachStatus.value.some((statusOrField) => {
|
|
1438
1438
|
return statusOrField.$pending;
|
|
1439
1439
|
});
|
|
1440
1440
|
});
|
|
@@ -1444,19 +1444,19 @@ function createReactiveCollectionStatus({
|
|
|
1444
1444
|
});
|
|
1445
1445
|
});
|
|
1446
1446
|
const $anyEdited = computed(() => {
|
|
1447
|
-
return $
|
|
1447
|
+
return $selfStatus.value.$anyEdited || $eachStatus.value.some((statusOrField) => {
|
|
1448
1448
|
return statusOrField.$anyEdited;
|
|
1449
1449
|
});
|
|
1450
1450
|
});
|
|
1451
1451
|
const $errors = computed(() => {
|
|
1452
1452
|
return {
|
|
1453
|
-
$self: $
|
|
1453
|
+
$self: $selfStatus.value.$errors,
|
|
1454
1454
|
$each: $eachStatus.value.map(($each) => $each.$errors)
|
|
1455
1455
|
};
|
|
1456
1456
|
});
|
|
1457
1457
|
const $silentErrors = computed(() => {
|
|
1458
1458
|
return {
|
|
1459
|
-
$self: $
|
|
1459
|
+
$self: $selfStatus.value.$silentErrors,
|
|
1460
1460
|
$each: $eachStatus.value.map(($each) => $each.$silentErrors)
|
|
1461
1461
|
};
|
|
1462
1462
|
});
|
|
@@ -1482,7 +1482,7 @@ function createReactiveCollectionStatus({
|
|
|
1482
1482
|
$anyDirty,
|
|
1483
1483
|
$name,
|
|
1484
1484
|
$each: $eachStatus,
|
|
1485
|
-
$
|
|
1485
|
+
$self: $selfStatus,
|
|
1486
1486
|
$value: state,
|
|
1487
1487
|
$edited,
|
|
1488
1488
|
$anyEdited
|
|
@@ -1525,8 +1525,8 @@ function createReactiveCollectionStatus({
|
|
|
1525
1525
|
if ($unwatchState) {
|
|
1526
1526
|
$unwatchState();
|
|
1527
1527
|
}
|
|
1528
|
-
if ($
|
|
1529
|
-
$
|
|
1528
|
+
if ($selfStatus.value) {
|
|
1529
|
+
$selfStatus.value.$unwatch();
|
|
1530
1530
|
}
|
|
1531
1531
|
if ($eachStatus.value) {
|
|
1532
1532
|
$eachStatus.value.forEach((element) => {
|
|
@@ -1543,13 +1543,13 @@ function createReactiveCollectionStatus({
|
|
|
1543
1543
|
collectionScopes = [];
|
|
1544
1544
|
}
|
|
1545
1545
|
function $touch(runCommit = true, withConditions = false) {
|
|
1546
|
-
$
|
|
1546
|
+
$selfStatus.value.$touch(runCommit, withConditions);
|
|
1547
1547
|
$eachStatus.value.forEach(($each) => {
|
|
1548
1548
|
$each.$touch(runCommit, withConditions);
|
|
1549
1549
|
});
|
|
1550
1550
|
}
|
|
1551
1551
|
function $reset() {
|
|
1552
|
-
$
|
|
1552
|
+
$selfStatus.value.$reset();
|
|
1553
1553
|
$eachStatus.value.forEach(($each) => {
|
|
1554
1554
|
$each.$reset();
|
|
1555
1555
|
});
|
|
@@ -1558,7 +1558,7 @@ function createReactiveCollectionStatus({
|
|
|
1558
1558
|
const data = state.value;
|
|
1559
1559
|
try {
|
|
1560
1560
|
const results = await Promise.allSettled([
|
|
1561
|
-
$
|
|
1561
|
+
$selfStatus.value.$validate(),
|
|
1562
1562
|
...$eachStatus.value.map((rule) => {
|
|
1563
1563
|
return rule.$validate();
|
|
1564
1564
|
})
|
|
@@ -1576,7 +1576,7 @@ function createReactiveCollectionStatus({
|
|
|
1576
1576
|
}
|
|
1577
1577
|
}
|
|
1578
1578
|
function $clearExternalErrors() {
|
|
1579
|
-
$
|
|
1579
|
+
$selfStatus.value.$clearExternalErrors();
|
|
1580
1580
|
$eachStatus.value.forEach(($each) => {
|
|
1581
1581
|
$each.$clearExternalErrors();
|
|
1582
1582
|
});
|
|
@@ -1603,7 +1603,7 @@ function createReactiveCollectionStatus({
|
|
|
1603
1603
|
}
|
|
1604
1604
|
const { $shortcuts, ...restScopeState } = scopeState;
|
|
1605
1605
|
return reactive({
|
|
1606
|
-
$
|
|
1606
|
+
$self: $selfStatus,
|
|
1607
1607
|
...restScopeState,
|
|
1608
1608
|
...$shortcuts,
|
|
1609
1609
|
$each: $eachStatus,
|
|
@@ -1642,7 +1642,7 @@ function createReactiveNestedStatus({
|
|
|
1642
1642
|
const scopedRulesStatus = Object.fromEntries(
|
|
1643
1643
|
mapOfRulesDef.filter(([_, rule]) => !!rule).map(([statePropKey, statePropRules]) => {
|
|
1644
1644
|
if (statePropRules) {
|
|
1645
|
-
const stateRef = toRef(state.value, statePropKey);
|
|
1645
|
+
const stateRef = toRef(state.value ?? {}, statePropKey);
|
|
1646
1646
|
const statePropRulesRef = toRef(() => statePropRules);
|
|
1647
1647
|
const $externalErrors = toRef(externalErrors?.value ?? {}, statePropKey);
|
|
1648
1648
|
const initialStateRef = toRef(initialState?.value ?? {}, statePropKey);
|
|
@@ -1664,7 +1664,7 @@ function createReactiveNestedStatus({
|
|
|
1664
1664
|
);
|
|
1665
1665
|
const externalRulesStatus = Object.fromEntries(
|
|
1666
1666
|
Object.entries(unref(externalErrors) ?? {}).filter(([key, errors]) => !(key in rulesDef.value) && !!errors).map(([key]) => {
|
|
1667
|
-
const stateRef = toRef(state.value, key);
|
|
1667
|
+
const stateRef = toRef(state.value ?? {}, key);
|
|
1668
1668
|
const initialStateRef = toRef(initialState?.value ?? {}, key);
|
|
1669
1669
|
return [
|
|
1670
1670
|
key,
|
|
@@ -1681,8 +1681,8 @@ function createReactiveNestedStatus({
|
|
|
1681
1681
|
})
|
|
1682
1682
|
);
|
|
1683
1683
|
const statesWithNoRules = Object.fromEntries(
|
|
1684
|
-
Object.entries(state.value).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
|
|
1685
|
-
const stateRef = toRef(state.value, key);
|
|
1684
|
+
Object.entries(state.value ?? {}).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
|
|
1685
|
+
const stateRef = toRef(state.value ?? {}, key);
|
|
1686
1686
|
const initialStateRef = toRef(initialState?.value ?? {}, key);
|
|
1687
1687
|
return [
|
|
1688
1688
|
key,
|