@regle/core 0.5.12 → 0.5.13
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 +36 -20
- package/dist/regle-core.d.cts +3 -4
- package/dist/regle-core.d.ts +3 -4
- package/dist/regle-core.min.cjs +2 -2
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +36 -20
- package/package.json +1 -1
package/dist/regle-core.cjs
CHANGED
|
@@ -77,8 +77,6 @@ function isDate(value) {
|
|
|
77
77
|
let possibleDate = null;
|
|
78
78
|
if (value instanceof Date) {
|
|
79
79
|
possibleDate = value;
|
|
80
|
-
} else if (typeof value === "number" && !isNaN(value)) {
|
|
81
|
-
possibleDate = new Date(value);
|
|
82
80
|
} else if (typeof value === "string") {
|
|
83
81
|
const date = new Date(value);
|
|
84
82
|
if (date.toString() === "Invalid Date") {
|
|
@@ -92,6 +90,22 @@ function isDate(value) {
|
|
|
92
90
|
}
|
|
93
91
|
}
|
|
94
92
|
|
|
93
|
+
// ../shared/utils/toDate.ts
|
|
94
|
+
function toDate(argument) {
|
|
95
|
+
const argStr = Object.prototype.toString.call(argument);
|
|
96
|
+
if (argument == null) {
|
|
97
|
+
return /* @__PURE__ */ new Date(NaN);
|
|
98
|
+
} else if (argument instanceof Date || typeof argument === "object" && argStr === "[object Date]") {
|
|
99
|
+
return new Date(argument.getTime());
|
|
100
|
+
} else if (typeof argument === "number" || argStr === "[object Number]") {
|
|
101
|
+
return new Date(argument);
|
|
102
|
+
} else if (typeof argument === "string" || argStr === "[object String]") {
|
|
103
|
+
return new Date(argument);
|
|
104
|
+
} else {
|
|
105
|
+
return /* @__PURE__ */ new Date(NaN);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
95
109
|
// src/types/rules/rule.internal.types.ts
|
|
96
110
|
var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
|
|
97
111
|
InternalRuleType2["Inline"] = "__inline";
|
|
@@ -868,7 +882,13 @@ function createReactiveFieldStatus({
|
|
|
868
882
|
const $edited = vue.computed(() => {
|
|
869
883
|
if ($dirty.value) {
|
|
870
884
|
if (isDate(initialState.value) && isDate(state.value)) {
|
|
871
|
-
return initialState.value.getDate() !== state.value.getDate();
|
|
885
|
+
return toDate(initialState.value).getDate() !== toDate(state.value).getDate();
|
|
886
|
+
}
|
|
887
|
+
if (initialState.value == null) {
|
|
888
|
+
return !!state.value;
|
|
889
|
+
}
|
|
890
|
+
if (Array.isArray(state.value) && Array.isArray(initialState.value)) {
|
|
891
|
+
return state.value.length !== initialState.value.length;
|
|
872
892
|
}
|
|
873
893
|
return initialState.value !== state.value;
|
|
874
894
|
}
|
|
@@ -1058,6 +1078,7 @@ function createReactiveFieldStatus({
|
|
|
1058
1078
|
scopeState.$dirty.value = false;
|
|
1059
1079
|
scopeState.triggerPunishment.value = false;
|
|
1060
1080
|
storage.setDirtyEntry(path, false);
|
|
1081
|
+
initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
|
|
1061
1082
|
Object.entries($rules.value).forEach(([_, rule]) => {
|
|
1062
1083
|
rule.$reset();
|
|
1063
1084
|
});
|
|
@@ -1195,7 +1216,7 @@ function createCollectionElement({
|
|
|
1195
1216
|
storage,
|
|
1196
1217
|
options,
|
|
1197
1218
|
externalErrors: vue.toRef(externalErrors?.value ?? [], index),
|
|
1198
|
-
initialState
|
|
1219
|
+
initialState,
|
|
1199
1220
|
shortcuts,
|
|
1200
1221
|
fieldName
|
|
1201
1222
|
});
|
|
@@ -1278,6 +1299,7 @@ function createReactiveCollectionStatus({
|
|
|
1278
1299
|
if (scope2) {
|
|
1279
1300
|
collectionScopes.push(scope2);
|
|
1280
1301
|
}
|
|
1302
|
+
const initialStateRef = vue.toRef(initialState.value ?? [], index);
|
|
1281
1303
|
const element = createCollectionElement({
|
|
1282
1304
|
$id: $id.value,
|
|
1283
1305
|
path,
|
|
@@ -1288,7 +1310,7 @@ function createReactiveCollectionStatus({
|
|
|
1288
1310
|
options,
|
|
1289
1311
|
storage,
|
|
1290
1312
|
externalErrors: vue.toRef(externalErrors?.value ?? {}, `$each`),
|
|
1291
|
-
initialState:
|
|
1313
|
+
initialState: initialStateRef,
|
|
1292
1314
|
shortcuts,
|
|
1293
1315
|
fieldName
|
|
1294
1316
|
});
|
|
@@ -1342,7 +1364,7 @@ function createReactiveCollectionStatus({
|
|
|
1342
1364
|
options,
|
|
1343
1365
|
storage,
|
|
1344
1366
|
externalErrors: vue.toRef(externalErrors?.value ?? {}, `$each`),
|
|
1345
|
-
initialState: vue.
|
|
1367
|
+
initialState: vue.toRef(initialState.value ?? [], index),
|
|
1346
1368
|
shortcuts,
|
|
1347
1369
|
fieldName
|
|
1348
1370
|
});
|
|
@@ -1419,7 +1441,7 @@ function createReactiveCollectionStatus({
|
|
|
1419
1441
|
});
|
|
1420
1442
|
});
|
|
1421
1443
|
const $edited = vue.computed(() => {
|
|
1422
|
-
return
|
|
1444
|
+
return !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
|
|
1423
1445
|
return statusOrField.$edited;
|
|
1424
1446
|
});
|
|
1425
1447
|
});
|
|
@@ -1625,7 +1647,7 @@ function createReactiveNestedStatus({
|
|
|
1625
1647
|
const stateRef = vue.toRef(state.value, statePropKey);
|
|
1626
1648
|
const statePropRulesRef = vue.toRef(() => statePropRules);
|
|
1627
1649
|
const $externalErrors = vue.toRef(externalErrors?.value ?? {}, statePropKey);
|
|
1628
|
-
const initialStateRef = vue.
|
|
1650
|
+
const initialStateRef = vue.toRef(initialState?.value ?? {}, statePropKey);
|
|
1629
1651
|
return [
|
|
1630
1652
|
statePropKey,
|
|
1631
1653
|
createReactiveChildrenStatus({
|
|
@@ -1645,7 +1667,7 @@ function createReactiveNestedStatus({
|
|
|
1645
1667
|
const externalRulesStatus = Object.fromEntries(
|
|
1646
1668
|
Object.entries(vue.unref(externalErrors) ?? {}).filter(([key, errors]) => !(key in rulesDef.value) && !!errors).map(([key]) => {
|
|
1647
1669
|
const stateRef = vue.toRef(state.value, key);
|
|
1648
|
-
const initialStateRef = vue.
|
|
1670
|
+
const initialStateRef = vue.toRef(initialState?.value ?? {}, key);
|
|
1649
1671
|
return [
|
|
1650
1672
|
key,
|
|
1651
1673
|
createReactiveChildrenStatus({
|
|
@@ -1663,7 +1685,7 @@ function createReactiveNestedStatus({
|
|
|
1663
1685
|
const statesWithNoRules = Object.fromEntries(
|
|
1664
1686
|
Object.entries(state.value).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
|
|
1665
1687
|
const stateRef = vue.toRef(state.value, key);
|
|
1666
|
-
const initialStateRef = vue.
|
|
1688
|
+
const initialStateRef = vue.toRef(initialState?.value ?? {}, key);
|
|
1667
1689
|
return [
|
|
1668
1690
|
key,
|
|
1669
1691
|
createReactiveChildrenStatus({
|
|
@@ -1694,7 +1716,7 @@ function createReactiveNestedStatus({
|
|
|
1694
1716
|
Object.values($fields.value).forEach((statusOrField) => {
|
|
1695
1717
|
statusOrField.$reset();
|
|
1696
1718
|
});
|
|
1697
|
-
|
|
1719
|
+
initialState.value = { ...cloneDeep(state.value) };
|
|
1698
1720
|
define$WatchExternalErrors();
|
|
1699
1721
|
}
|
|
1700
1722
|
function $touch(runCommit = true, withConditions = false) {
|
|
@@ -2049,8 +2071,7 @@ function useRootStorage({
|
|
|
2049
2071
|
scopeRules,
|
|
2050
2072
|
state,
|
|
2051
2073
|
customRules,
|
|
2052
|
-
shortcuts
|
|
2053
|
-
onReset
|
|
2074
|
+
shortcuts
|
|
2054
2075
|
}) {
|
|
2055
2076
|
const storage = useStorage();
|
|
2056
2077
|
const regle = vue.ref();
|
|
@@ -2066,8 +2087,7 @@ function useRootStorage({
|
|
|
2066
2087
|
initialState,
|
|
2067
2088
|
shortcuts,
|
|
2068
2089
|
fieldName: "root",
|
|
2069
|
-
path: ""
|
|
2070
|
-
onReset
|
|
2090
|
+
path: ""
|
|
2071
2091
|
});
|
|
2072
2092
|
if (vue.getCurrentScope()) {
|
|
2073
2093
|
vue.onScopeDispose(() => {
|
|
@@ -2093,17 +2113,13 @@ function createUseRegleComposable(customRules, options, shortcuts) {
|
|
|
2093
2113
|
};
|
|
2094
2114
|
const processedState = vue.isRef(state) ? state : vue.ref(state);
|
|
2095
2115
|
const initialState = vue.ref({ ...cloneDeep(processedState.value) });
|
|
2096
|
-
function onReset() {
|
|
2097
|
-
initialState.value = { ...cloneDeep(processedState.value) };
|
|
2098
|
-
}
|
|
2099
2116
|
const regle = useRootStorage({
|
|
2100
2117
|
scopeRules,
|
|
2101
2118
|
state: processedState,
|
|
2102
2119
|
options: resolvedOptions,
|
|
2103
2120
|
initialState,
|
|
2104
2121
|
customRules,
|
|
2105
|
-
shortcuts
|
|
2106
|
-
onReset
|
|
2122
|
+
shortcuts
|
|
2107
2123
|
});
|
|
2108
2124
|
return {
|
|
2109
2125
|
r$: regle.regle
|
package/dist/regle-core.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, MaybeRefOrGetter, ComputedRef } from 'vue';
|
|
1
|
+
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter, ComputedRef } from 'vue';
|
|
2
2
|
|
|
3
3
|
type Prettify<T> = T extends infer R ? {
|
|
4
4
|
[K in keyof R]: R[K];
|
|
@@ -530,7 +530,7 @@ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends
|
|
|
530
530
|
*
|
|
531
531
|
* To see the list of properties: {@link https://www.reglejs.dev/core-concepts/validation-properties}
|
|
532
532
|
*/
|
|
533
|
-
r$: RegleRoot<TState, TRules, TValidationGroups, TShortcuts
|
|
533
|
+
r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
|
|
534
534
|
}
|
|
535
535
|
type isDeepExact<T, U> = {
|
|
536
536
|
[K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
|
|
@@ -590,14 +590,13 @@ interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
|
590
590
|
*/
|
|
591
591
|
declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
592
592
|
|
|
593
|
-
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts,
|
|
593
|
+
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, }: {
|
|
594
594
|
scopeRules: ComputedRef<$InternalReglePartialRuleTree>;
|
|
595
595
|
state: Ref<Record<string, any>>;
|
|
596
596
|
options: ResolvedRegleBehaviourOptions;
|
|
597
597
|
initialState: Ref<Record<string, any>>;
|
|
598
598
|
customRules?: () => CustomRulesDeclarationTree;
|
|
599
599
|
shortcuts: RegleShortcutDefinition | undefined;
|
|
600
|
-
onReset?: () => void;
|
|
601
600
|
}): {
|
|
602
601
|
regle: $InternalRegleStatus | undefined;
|
|
603
602
|
};
|
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, MaybeRefOrGetter, ComputedRef } from 'vue';
|
|
1
|
+
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter, ComputedRef } from 'vue';
|
|
2
2
|
|
|
3
3
|
type Prettify<T> = T extends infer R ? {
|
|
4
4
|
[K in keyof R]: R[K];
|
|
@@ -530,7 +530,7 @@ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends
|
|
|
530
530
|
*
|
|
531
531
|
* To see the list of properties: {@link https://www.reglejs.dev/core-concepts/validation-properties}
|
|
532
532
|
*/
|
|
533
|
-
r$: RegleRoot<TState, TRules, TValidationGroups, TShortcuts
|
|
533
|
+
r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
|
|
534
534
|
}
|
|
535
535
|
type isDeepExact<T, U> = {
|
|
536
536
|
[K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
|
|
@@ -590,14 +590,13 @@ interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
|
590
590
|
*/
|
|
591
591
|
declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
592
592
|
|
|
593
|
-
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts,
|
|
593
|
+
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, }: {
|
|
594
594
|
scopeRules: ComputedRef<$InternalReglePartialRuleTree>;
|
|
595
595
|
state: Ref<Record<string, any>>;
|
|
596
596
|
options: ResolvedRegleBehaviourOptions;
|
|
597
597
|
initialState: Ref<Record<string, any>>;
|
|
598
598
|
customRules?: () => CustomRulesDeclarationTree;
|
|
599
599
|
shortcuts: RegleShortcutDefinition | undefined;
|
|
600
|
-
onReset?: () => void;
|
|
601
600
|
}): {
|
|
602
601
|
regle: $InternalRegleStatus | undefined;
|
|
603
602
|
};
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function B(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 lt=Symbol("regle-rule");function wt(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 J(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>J(n)))),r=="Map"&&(t=new Map([...e].map(n=>[J(n[0]),J(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,wt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=J(e[n]);}return t}function re(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(B(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(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}}var _e=(r=>(r.Inline="__inline",r.Async="__async",r))(_e||{});function ot(e,t){return e.some(r=>r[t])}function ut(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function Y(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function it(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function st(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 Ve(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...Y(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...Y(t)),$;return m instanceof Promise?m.then(h=>($=h,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:it(t),_brand:lt}}function Ge(e){if(typeof e.validator=="function"){let r=Ve(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(st(e.validator)>1){let l=function(...f){return Ve(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 Ne(){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 h(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function _(o,s){n.value.set(o,s);}function A(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function D(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),W=Object.keys(o);return W.length!==i.length||!W.every(k=>i.includes(k))?!1:W.every(k=>{let w=o[k],b=s[k];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((z,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=Y(b._params),U=Y(w._params);return I?.[y]===U?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=vue.ref(!1),W=vue.ref(!0),H=vue.ref({}),k=vue.ref(!1);return l.value.set(o,{$pending:i,$valid:W,$metadata:H,$validating:k}),{$pending:i,$valid:W,$metadata:H,$validating:k}}}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:_,checkRuleDeclEntry:D,getDirtyState:A,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:h,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:re(e.value)}function We(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 Nt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Nt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ct(e,t){return Te(e)||re(t.value)&&!B(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function ft(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function Rt(e){return !!e.value&&re(e.value)}function $e(e){return re(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function pt(e){return re(e)&&"$fields"in e}function dt(e){return !!e&&"$rules"in e}function ke({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 yt({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(),h={},_,A=vue.ref(!1),{$pending:a,$valid:D,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=vue.effectScope(),h=$.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:D.value,$invalid:!D.value,$pending:a.value},$params:x.value,...C.value})),z=vue.computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",g=t?t[n]?.[u]:void 0;if(g&&(typeof g=="function"?c=g(b.value):c=g),ge(r)){let R=`_${u}_patched`;g&&!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 B(u)&&(u="This field is not valid"),u}),U=vue.computed(()=>y("tooltip")),ee=vue.computed(()=>ge(r)&&r.value.type?r.value.type:n),ne=vue.computed(()=>ge(r)?r.value.validator:r.value),x=vue.computed(()=>typeof r.value=="function"?[]:Y(r.value._params??[])),P=vue.computed(()=>`${f}.${ee.value}`);return {$active:z,$message:I,$type:ee,$validator:ne,$params:x,$path:P,$tooltip:U}}),_=vue.watch(h?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&H();});}o();function s(){D.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let z=h.$validator.value,y=z(l.value,...h.$params.value),I=l.value;s();let U;if(y instanceof Promise?U=await y:U=y,l.value!==I)return !0;if(typeof U=="boolean")b=U;else {let{$valid:ee,...ne}=U;b=ee,C.value=ne;}}catch{b=!1;}finally{a.value=!1;}return b}let W=De(i,d??200);async function H(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await W();else {let z=h.$validator.value,y=z(l.value,...h.$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,...U}=y;b=I,C.value=U;}}return D.value=b,b}catch{return !1}finally{N.value=!1;}}function k(){D.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){_(),$.stop(),$=vue.effectScope();}return vue.reactive({...h,$pending:a,$valid:D,$metadata:C,$haveAsync:A,$validating:N,$validate:H,$unwatch:w,$watch:o,$reset:k})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:h,shortcuts:_}){let A=vue.effectScope(),a,D=[],C,N,o,s,i=()=>{};function W(){let v=t.value,F=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([V])=>V.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([V])=>!V.startsWith("$")).map(([V,X])=>{if(X){let te=vue.toRef(()=>X);return [V,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:te,ruleKey:V,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(V=>!!V.length)),a.processShortcuts(),H(),F?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function H(){i=a.$debounce.value?De(z,a.$debounce.value??a.$haveAnyAsyncRule?100:0):z;}function k(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),A.stop(),A=vue.effectScope(),D.forEach(v=>v.stop()),D=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$watch();}),a=A.run(()=>{let v=vue.ref(!1),F=vue.ref(!1),V=vue.computed(()=>v.value),X=vue.computed(()=>I.value.$debounce),te=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):!1),S=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):!S.value),G=vue.computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$validating)),me=vue.computed({get:()=>e.value,set(Z){C(),e.value=Z,b();}}),Ae=vue.computed(()=>ce.value&&!ve.value&&v.value),Ye=vue.computed(()=>Ae.value?ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),Fe=vue.computed(()=>v.value?Me(h.value)&&Me(e.value)?h.value.getDate()!==e.value.getDate():h.value!==e.value:!1),Qe=vue.computed(()=>Fe.value),Xe=vue.computed(()=>yt({field:{$rules:y.value}})),Ze=vue.computed(()=>ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),Ke=vue.computed(()=>E.value?V.value&&!(ce.value||ve.value):!(ce.value||ve.value)),ve=vue.computed(()=>F.value||!S.value?Object.entries(y.value).some(([Z,ae])=>ae.$pending):!1),ce=vue.computed(()=>d?.value?.length?!0:B(y.value)?!1:!S.value||S.value&&F.value?Object.entries(y.value).some(([Z,ae])=>!ae.$valid):!1),et=vue.computed(()=>l),je=vue.computed(()=>!!B(y.value)),tt=vue.computed(()=>d?.value?.length||je.value?!1:v.value&&!B(e.value)&&!G.value?Object.values(y.value).every(Z=>Z.$valid&&Z.$active):!1),Ct=vue.computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$haveAsync));function It(){_?.fields&&Object.entries(_.fields).forEach(([Z,ae])=>{let nt=vue.effectScope();rt[Z]=nt.run(()=>{let at=vue.ref();return vue.watchEffect(()=>{at.value=ae(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:me,$rules:y,$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$errors:Ye,$ready:Ke,$silentErrors:Ze,$anyDirty:V,$tooltips:Xe,$name:et,$inactive:je,$edited:Fe,$anyEdited:Qe}));}),at}),D.push(nt);});}let rt={};return vue.watch(ce,Z=>{Z||(F.value=!1);}),{$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$debounce:X,$lazy:te,$errors:Ye,$ready:Ke,$silentErrors:Ze,$rewardEarly:S,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:V,$edited:Fe,$anyEdited:Qe,$name:et,$haveAnyAsyncRule:Ct,$shortcuts:rt,$validating:G,$tooltips:Xe,$dirty:v,triggerPunishment:F,processShortcuts:It,$silentValue:me,$inactive:je}}),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,H);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&W(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function z(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=vue.ref({}),I=vue.ref({});W();function U(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),Object.entries(y.value).forEach(([v,F])=>{F.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function ee(v=!0,F=!1){a.$dirty.value||(a.$dirty.value=!0),F&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ne(){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 B(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([X,te])=>te.$validate()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function x(){k(),e.value=J(h),U();}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:g,$autoDirty:R,$rewardEarly:T,$clearExternalErrorsOnChange:q,$haveAnyAsyncRule:K,$debounce:Q,$lazy:le,...ie}=a;return vue.reactive({...ie,$externalErrors:d,$value:e,$rules:y,...c,$reset:U,$touch:ee,$validate:ne,$unwatch:k,$watch:w,$resetAll:x,$extractDirtyFields:P,$clearExternalErrors:u})}function Le({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:h,fieldName:_}){let A=d.$key?d.$key:Ce(),a=`${t}.${String(A)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:A,enumerable:!1,configurable:!1,writable:!1}}));let D=be({state:f,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:vue.toRef(m?.value??[],r),initialState:vue.computed(()=>$.value?.[r]),shortcuts:h,fieldName:_});if(D){let C=f.value?.$id;D.$id=C??String(A),l.addArrayStatus(e,D.$id,D);}return D}function St({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let h=vue.effectScope(),_,A=vue.effectScope(),a,D=[];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=A.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)})),W(),w();function W(){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:g,unwrapped:R}=We(t.value.$each,vue.toRef(()=>u),c);g&&D.push(g);let T=Le({$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:vue.computed(()=>d.value?.[c]),shortcuts:m,fieldName:$});return T||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 H(){if(Array.isArray(e.value)){let u=J(i.value);i.value=e.value.map((c,g)=>{let R=vue.toRef(()=>c);if(c.$id&&i.value.find(T=>T.$id===c.$id)){let T=l.getArrayStatus(C.value,c.$id);return T?(T.$value=R,T):null}else {let{scope:T,unwrapped:q}=We(t.value.$each,R,g);if(T&&D.push(T),q){let K=Le({$id:C.value,path:n,customMessages:r,rules:q,stateValue:R,index:g,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:vue.computed(()=>d.value?.[g]),shortcuts:m,fieldName:$});return K||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(g=>c.$id===g.$id)).forEach((c,g)=>{l.deleteArrayStatus(C.value,g.toString());});}else i.value=[];}function k(){o=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?W():H();},{deep:xe?1:!0,flush:"pre"});}function w(){k(),h=vue.effectScope(),_=h.run(()=>{let u=vue.computed({get:()=>e.value,set(S){o(),e.value=S,k();}}),c=vue.computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(S=>S.$dirty)),g=vue.computed(()=>s.value.$anyDirty||i.value.some(S=>S.$anyDirty)),R=vue.computed(()=>s.value.$invalid||i.value.some(S=>S.$invalid)),T=vue.computed(()=>(B(s.value.$rules)?!0:s.value.$valid)&&i.value.every(S=>S.$valid)),q=vue.computed(()=>s.value.$error||i.value.some(S=>S.$error)),K=vue.computed(()=>!(R.value||Q.value)),Q=vue.computed(()=>s.value.$pending||i.value.some(S=>S.$pending)),le=vue.computed(()=>s.value.$edited&&!!i.value.length&&i.value.every(S=>S.$edited)),ie=vue.computed(()=>s.value.$anyEdited||i.value.some(S=>S.$anyEdited)),v=vue.computed(()=>({$self:s.value.$errors,$each:i.value.map(S=>S.$errors)})),F=vue.computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(S=>S.$silentErrors)})),V=vue.computed(()=>$);function X(){m?.collections&&Object.entries(m?.collections).forEach(([S,O])=>{let E=vue.effectScope();te[S]=E.run(()=>{let G=vue.ref();return vue.watchEffect(()=>{G.value=O(vue.reactive({$dirty:c,$error:q,$silentValue:u,$pending:Q,$invalid:R,$valid:T,$errors:v,$ready:K,$silentErrors:F,$anyDirty:g,$name:V,$each:i,$field:s,$value:e,$edited:le,$anyEdited:ie}));}),G}),D.push(E);});}let te={};return X(),{$dirty:c,$anyDirty:g,$invalid:R,$valid:T,$error:q,$pending:Q,$errors:v,$silentErrors:F,$ready:K,$name:V,$shortcuts:te,$silentValue:u,$edited:le,$anyEdited:ie}}),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();}),h.stop(),h=vue.effectScope(),A.stop(),A=vue.effectScope(!0),D.forEach(u=>u.stop()),D=[];}function z(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(g=>{g.$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 U(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function ee(u=!0){let c=i.value.map(g=>{if(pt(g))return g.$extractDirtyFields(u)});return u&&c.every(g=>B(g))&&(c=[]),c}function ne(){b(),e.value=J(d.value),y();}let{$shortcuts:x,...P}=_;return vue.reactive({$field:s,...P,...x,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:z,$reset:y,$resetAll:ne,$extractDirtyFields:ee,$clearExternalErrors:U})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=vue.effectScope(),h,_=[],A=null,a=null,D=null;async function N(x=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,T])=>!!T).map(([R,T])=>{if(T){let q=vue.toRef(t.value,R),K=vue.toRef(()=>T),Q=vue.toRef(l?.value??{},R),le=vue.computed(()=>p?.value?.[R]);return [R,be({state:q,rulesDef:K,path:r?`${r}.${R}`:R,externalErrors:Q,initialState:le,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([R,T])=>!(R in e.value)&&!!T).map(([R])=>{let T=vue.toRef(t.value,R),q=vue.computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]})),g=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let T=vue.toRef(t.value,R),q=vue.computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]}));o.value={...u,...c,...g},x&&k();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(x=>{x.$reset();}),m.onReset?.(),W();}function i(x=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(x,P);});}function W(){l?.value&&(a=vue.watch(l,()=>{w(),N();},{deep:!0}));}function H(){D=vue.watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function k(){n&&(A?.(),A=vue.watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),W()),H(),$=vue.effectScope(),h=$.run(()=>{let x=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)),g=vue.computed(()=>{let O=Object.entries(o.value).filter(([E,G])=>dt(G)?!G.$inactive:!0);return O.length?O.every(([E,G])=>G?.$valid):!1}),R=vue.computed(()=>u.value&&!Q.value&&c.value),T=vue.computed(()=>vue.unref(m.options.rewardEarly)!=null?vue.unref(m.options.rewardEarly):!1),q=vue.computed(()=>vue.unref(m.options.autoDirty)!=null?vue.unref(m.options.autoDirty):!T.value),K=vue.computed(()=>q.value?u.value&&!(c.value||Q.value):!(c.value||Q.value)),Q=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),le=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ie=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)),F=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),V=vue.computed(()=>d);function X(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let G=vue.effectScope();S[O]=G.run(()=>{let me=vue.ref();return vue.watchEffect(()=>{me.value=E(vue.reactive({$dirty:P,$value:t,$silentValue:x,$error:R,$pending:Q,$invalid:c,$valid:g,$ready:K,$anyDirty:u,$name:V,$silentErrors:ie,$errors:le,$fields:o,$edited:v,$anyEdited:F}));}),me}),_.push(G);});}let te=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(G=>[G,ot(E,G)])),...Object.fromEntries(["$errors","$silentErrors"].map(G=>[G,ut(E,G)]))}]:[])):{},set(){}}),S={};return X(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:g,$error:R,$pending:Q,$errors:le,$silentErrors:ie,$ready:K,$name:V,$shortcuts:S,$groups:te,$silentValue:x,$edited:v,$anyEdited:F}});}function w(){A?.(),a?.(),D?.(),_.forEach(x=>x.stop()),_=[],$.stop(),o.value&&Object.entries(o.value).forEach(([x,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([x,P])=>{P.$clearExternalErrors();});}async function z(){w(),t.value=J({...p.value??{}}),s(),N();}function y(x){return x.filter(([P,u])=>re(u)?!(u&&typeof u=="object"&&"_null"in u)&&!B(u):Array.isArray(u)?u.length:!0)}function I(x=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(x)]);return x&&(P=y(P)),Object.fromEntries(P)}async function U(){try{let x=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:x}}catch{return {result:!1,data:t.value}}}let{$shortcuts:ee,...ne}=h;return vue.reactive({...ne,...ee,$fields:o,$value:t,$resetAll:z,$reset:s,$touch:i,$validate:U,$unwatch:w,$watch:k,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(ft(e,r.state))return St({rulesDef:e,externalErrors:t,...r});if(ct(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(Rt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f,onReset:p}){let d=Ne(),m=vue.ref();return m.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:d,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:"",onReset:p}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{m.value?.$unwatch();}),vue.reactive({regle:m})}function ze(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},h=vue.isRef(f)?f:vue.ref(f),_=vue.ref({...J(h.value)});function A(){_.value={...J(h.value)};}return {r$:ye({scopeRules:m,state:h,options:$,initialState:_,customRules:e,shortcuts:r,onReset:A}).regle}}return l}var Dt=ze();function qe(){function e(t,r){return r}return e}var Je=qe();function xt({rules:e,modifiers:t,shortcuts:r}){let n=ze(e,t,r),l=qe();return {useRegle:n,inferRules:l}}
|
|
2
|
-
exports.InternalRuleType=
|
|
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}}
|
|
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 B(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 lt=Symbol("regle-rule");function wt(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 J(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>J(n)))),r=="Map"&&(t=new Map([...e].map(n=>[J(n[0]),J(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,wt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=J(e[n]);}return t}function re(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(B(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(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}}var _e=(r=>(r.Inline="__inline",r.Async="__async",r))(_e||{});function ot(e,t){return e.some(r=>r[t])}function ut(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function Y(e){try{return e.map(t=>toValue(t))}catch{return []}}function it(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function st(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 Ve(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...Y(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...Y(t)),$;return m instanceof Promise?m.then(h=>($=h,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:it(t),_brand:lt}}function Ge(e){if(typeof e.validator=="function"){let r=Ve(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(st(e.validator)>1){let l=function(...f){return Ve(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 Ne(){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 h(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function _(o,s){n.value.set(o,s);}function A(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function D(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),W=Object.keys(o);return W.length!==i.length||!W.every(k=>i.includes(k))?!1:W.every(k=>{let w=o[k],b=s[k];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((z,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=Y(b._params),U=Y(w._params);return I?.[y]===U?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=ref(!1),W=ref(!0),H=ref({}),k=ref(!1);return l.value.set(o,{$pending:i,$valid:W,$metadata:H,$validating:k}),{$pending:i,$valid:W,$metadata:H,$validating:k}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:_,checkRuleDeclEntry:D,getDirtyState:A,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:h,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:re(e.value)}function We(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 Nt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Nt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ct(e,t){return Te(e)||re(t.value)&&!B(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function ft(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function Rt(e){return !!e.value&&re(e.value)}function $e(e){return re(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function pt(e){return re(e)&&"$fields"in e}function dt(e){return !!e&&"$rules"in e}function ke({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 yt({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(),h={},_,A=ref(!1),{$pending:a,$valid:D,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=effectScope(),h=$.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:D.value,$invalid:!D.value,$pending:a.value},$params:x.value,...C.value})),z=computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",g=t?t[n]?.[u]:void 0;if(g&&(typeof g=="function"?c=g(b.value):c=g),ge(r)){let R=`_${u}_patched`;g&&!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 B(u)&&(u="This field is not valid"),u}),U=computed(()=>y("tooltip")),ee=computed(()=>ge(r)&&r.value.type?r.value.type:n),ne=computed(()=>ge(r)?r.value.validator:r.value),x=computed(()=>typeof r.value=="function"?[]:Y(r.value._params??[])),P=computed(()=>`${f}.${ee.value}`);return {$active:z,$message:I,$type:ee,$validator:ne,$params:x,$path:P,$tooltip:U}}),_=watch(h?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&H();});}o();function s(){D.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let z=h.$validator.value,y=z(l.value,...h.$params.value),I=l.value;s();let U;if(y instanceof Promise?U=await y:U=y,l.value!==I)return !0;if(typeof U=="boolean")b=U;else {let{$valid:ee,...ne}=U;b=ee,C.value=ne;}}catch{b=!1;}finally{a.value=!1;}return b}let W=De(i,d??200);async function H(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await W();else {let z=h.$validator.value,y=z(l.value,...h.$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,...U}=y;b=I,C.value=U;}}return D.value=b,b}catch{return !1}finally{N.value=!1;}}function k(){D.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){_(),$.stop(),$=effectScope();}return reactive({...h,$pending:a,$valid:D,$metadata:C,$haveAsync:A,$validating:N,$validate:H,$unwatch:w,$watch:o,$reset:k})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:h,shortcuts:_}){let A=effectScope(),a,D=[],C,N,o,s,i=()=>{};function W(){let v=t.value,F=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([V])=>V.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([V])=>!V.startsWith("$")).map(([V,X])=>{if(X){let te=toRef(()=>X);return [V,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:te,ruleKey:V,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(V=>!!V.length)),a.processShortcuts(),H(),F?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function H(){i=a.$debounce.value?De(z,a.$debounce.value??a.$haveAnyAsyncRule?100:0):z;}function k(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),A.stop(),A=effectScope(),D.forEach(v=>v.stop()),D=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$watch();}),a=A.run(()=>{let v=ref(!1),F=ref(!1),V=computed(()=>v.value),X=computed(()=>I.value.$debounce),te=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):!1),S=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):!S.value),G=computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$validating)),me=computed({get:()=>e.value,set(Z){C(),e.value=Z,b();}}),Ae=computed(()=>ce.value&&!ve.value&&v.value),Ye=computed(()=>Ae.value?ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),Fe=computed(()=>v.value?Me(h.value)&&Me(e.value)?h.value.getDate()!==e.value.getDate():h.value!==e.value:!1),Qe=computed(()=>Fe.value),Xe=computed(()=>yt({field:{$rules:y.value}})),Ze=computed(()=>ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),Ke=computed(()=>E.value?V.value&&!(ce.value||ve.value):!(ce.value||ve.value)),ve=computed(()=>F.value||!S.value?Object.entries(y.value).some(([Z,ae])=>ae.$pending):!1),ce=computed(()=>d?.value?.length?!0:B(y.value)?!1:!S.value||S.value&&F.value?Object.entries(y.value).some(([Z,ae])=>!ae.$valid):!1),et=computed(()=>l),je=computed(()=>!!B(y.value)),tt=computed(()=>d?.value?.length||je.value?!1:v.value&&!B(e.value)&&!G.value?Object.values(y.value).every(Z=>Z.$valid&&Z.$active):!1),Ct=computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$haveAsync));function It(){_?.fields&&Object.entries(_.fields).forEach(([Z,ae])=>{let nt=effectScope();rt[Z]=nt.run(()=>{let at=ref();return watchEffect(()=>{at.value=ae(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:me,$rules:y,$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$errors:Ye,$ready:Ke,$silentErrors:Ze,$anyDirty:V,$tooltips:Xe,$name:et,$inactive:je,$edited:Fe,$anyEdited:Qe}));}),at}),D.push(nt);});}let rt={};return watch(ce,Z=>{Z||(F.value=!1);}),{$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$debounce:X,$lazy:te,$errors:Ye,$ready:Ke,$silentErrors:Ze,$rewardEarly:S,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:V,$edited:Fe,$anyEdited:Qe,$name:et,$haveAnyAsyncRule:Ct,$shortcuts:rt,$validating:G,$tooltips:Xe,$dirty:v,triggerPunishment:F,processShortcuts:It,$silentValue:me,$inactive:je}}),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,H);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&W(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function z(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=ref({}),I=ref({});W();function U(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),Object.entries(y.value).forEach(([v,F])=>{F.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function ee(v=!0,F=!1){a.$dirty.value||(a.$dirty.value=!0),F&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ne(){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 B(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([X,te])=>te.$validate()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function x(){k(),e.value=J(h),U();}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:g,$autoDirty:R,$rewardEarly:T,$clearExternalErrorsOnChange:q,$haveAnyAsyncRule:K,$debounce:Q,$lazy:le,...ie}=a;return reactive({...ie,$externalErrors:d,$value:e,$rules:y,...c,$reset:U,$touch:ee,$validate:ne,$unwatch:k,$watch:w,$resetAll:x,$extractDirtyFields:P,$clearExternalErrors:u})}function Le({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:h,fieldName:_}){let A=d.$key?d.$key:Ce(),a=`${t}.${String(A)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:A,enumerable:!1,configurable:!1,writable:!1}}));let D=be({state:f,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:toRef(m?.value??[],r),initialState:computed(()=>$.value?.[r]),shortcuts:h,fieldName:_});if(D){let C=f.value?.$id;D.$id=C??String(A),l.addArrayStatus(e,D.$id,D);}return D}function St({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let h=effectScope(),_,A=effectScope(),a,D=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=ref(),N=ref(e.value),o,s=ref({}),i=l.getCollectionsEntry(n);a=A.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)})),W(),w();function W(){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:g,unwrapped:R}=We(t.value.$each,toRef(()=>u),c);g&&D.push(g);let T=Le({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:toRef(()=>u),index:c,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:computed(()=>d.value?.[c]),shortcuts:m,fieldName:$});return T||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 H(){if(Array.isArray(e.value)){let u=J(i.value);i.value=e.value.map((c,g)=>{let R=toRef(()=>c);if(c.$id&&i.value.find(T=>T.$id===c.$id)){let T=l.getArrayStatus(C.value,c.$id);return T?(T.$value=R,T):null}else {let{scope:T,unwrapped:q}=We(t.value.$each,R,g);if(T&&D.push(T),q){let K=Le({$id:C.value,path:n,customMessages:r,rules:q,stateValue:R,index:g,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:computed(()=>d.value?.[g]),shortcuts:m,fieldName:$});return K||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(g=>c.$id===g.$id)).forEach((c,g)=>{l.deleteArrayStatus(C.value,g.toString());});}else i.value=[];}function k(){o=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?W():H();},{deep:xe?1:!0,flush:"pre"});}function w(){k(),h=effectScope(),_=h.run(()=>{let u=computed({get:()=>e.value,set(S){o(),e.value=S,k();}}),c=computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(S=>S.$dirty)),g=computed(()=>s.value.$anyDirty||i.value.some(S=>S.$anyDirty)),R=computed(()=>s.value.$invalid||i.value.some(S=>S.$invalid)),T=computed(()=>(B(s.value.$rules)?!0:s.value.$valid)&&i.value.every(S=>S.$valid)),q=computed(()=>s.value.$error||i.value.some(S=>S.$error)),K=computed(()=>!(R.value||Q.value)),Q=computed(()=>s.value.$pending||i.value.some(S=>S.$pending)),le=computed(()=>s.value.$edited&&!!i.value.length&&i.value.every(S=>S.$edited)),ie=computed(()=>s.value.$anyEdited||i.value.some(S=>S.$anyEdited)),v=computed(()=>({$self:s.value.$errors,$each:i.value.map(S=>S.$errors)})),F=computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(S=>S.$silentErrors)})),V=computed(()=>$);function X(){m?.collections&&Object.entries(m?.collections).forEach(([S,O])=>{let E=effectScope();te[S]=E.run(()=>{let G=ref();return watchEffect(()=>{G.value=O(reactive({$dirty:c,$error:q,$silentValue:u,$pending:Q,$invalid:R,$valid:T,$errors:v,$ready:K,$silentErrors:F,$anyDirty:g,$name:V,$each:i,$field:s,$value:e,$edited:le,$anyEdited:ie}));}),G}),D.push(E);});}let te={};return X(),{$dirty:c,$anyDirty:g,$invalid:R,$valid:T,$error:q,$pending:Q,$errors:v,$silentErrors:F,$ready:K,$name:V,$shortcuts:te,$silentValue:u,$edited:le,$anyEdited:ie}}),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();}),h.stop(),h=effectScope(),A.stop(),A=effectScope(!0),D.forEach(u=>u.stop()),D=[];}function z(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(g=>{g.$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 U(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function ee(u=!0){let c=i.value.map(g=>{if(pt(g))return g.$extractDirtyFields(u)});return u&&c.every(g=>B(g))&&(c=[]),c}function ne(){b(),e.value=J(d.value),y();}let{$shortcuts:x,...P}=_;return reactive({$field:s,...P,...x,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:z,$reset:y,$resetAll:ne,$extractDirtyFields:ee,$clearExternalErrors:U})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=effectScope(),h,_=[],A=null,a=null,D=null;async function N(x=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,T])=>!!T).map(([R,T])=>{if(T){let q=toRef(t.value,R),K=toRef(()=>T),Q=toRef(l?.value??{},R),le=computed(()=>p?.value?.[R]);return [R,be({state:q,rulesDef:K,path:r?`${r}.${R}`:R,externalErrors:Q,initialState:le,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(unref(l)??{}).filter(([R,T])=>!(R in e.value)&&!!T).map(([R])=>{let T=toRef(t.value,R),q=computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]})),g=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let T=toRef(t.value,R),q=computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]}));o.value={...u,...c,...g},x&&k();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(x=>{x.$reset();}),m.onReset?.(),W();}function i(x=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(x,P);});}function W(){l?.value&&(a=watch(l,()=>{w(),N();},{deep:!0}));}function H(){D=watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function k(){n&&(A?.(),A=watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),W()),H(),$=effectScope(),h=$.run(()=>{let x=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)),g=computed(()=>{let O=Object.entries(o.value).filter(([E,G])=>dt(G)?!G.$inactive:!0);return O.length?O.every(([E,G])=>G?.$valid):!1}),R=computed(()=>u.value&&!Q.value&&c.value),T=computed(()=>unref(m.options.rewardEarly)!=null?unref(m.options.rewardEarly):!1),q=computed(()=>unref(m.options.autoDirty)!=null?unref(m.options.autoDirty):!T.value),K=computed(()=>q.value?u.value&&!(c.value||Q.value):!(c.value||Q.value)),Q=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),le=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ie=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)),F=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),V=computed(()=>d);function X(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let G=effectScope();S[O]=G.run(()=>{let me=ref();return watchEffect(()=>{me.value=E(reactive({$dirty:P,$value:t,$silentValue:x,$error:R,$pending:Q,$invalid:c,$valid:g,$ready:K,$anyDirty:u,$name:V,$silentErrors:ie,$errors:le,$fields:o,$edited:v,$anyEdited:F}));}),me}),_.push(G);});}let te=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(G=>[G,ot(E,G)])),...Object.fromEntries(["$errors","$silentErrors"].map(G=>[G,ut(E,G)]))}]:[])):{},set(){}}),S={};return X(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:g,$error:R,$pending:Q,$errors:le,$silentErrors:ie,$ready:K,$name:V,$shortcuts:S,$groups:te,$silentValue:x,$edited:v,$anyEdited:F}});}function w(){A?.(),a?.(),D?.(),_.forEach(x=>x.stop()),_=[],$.stop(),o.value&&Object.entries(o.value).forEach(([x,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([x,P])=>{P.$clearExternalErrors();});}async function z(){w(),t.value=J({...p.value??{}}),s(),N();}function y(x){return x.filter(([P,u])=>re(u)?!(u&&typeof u=="object"&&"_null"in u)&&!B(u):Array.isArray(u)?u.length:!0)}function I(x=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(x)]);return x&&(P=y(P)),Object.fromEntries(P)}async function U(){try{let x=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:x}}catch{return {result:!1,data:t.value}}}let{$shortcuts:ee,...ne}=h;return reactive({...ne,...ee,$fields:o,$value:t,$resetAll:z,$reset:s,$touch:i,$validate:U,$unwatch:w,$watch:k,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(ft(e,r.state))return St({rulesDef:e,externalErrors:t,...r});if(ct(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(Rt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f,onReset:p}){let d=Ne(),m=ref();return m.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:d,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:"",onReset:p}),getCurrentScope()&&onScopeDispose(()=>{m.value?.$unwatch();}),reactive({regle:m})}function ze(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},h=isRef(f)?f:ref(f),_=ref({...J(h.value)});function A(){_.value={...J(h.value)};}return {r$:ye({scopeRules:m,state:h,options:$,initialState:_,customRules:e,shortcuts:r,onReset:A}).regle}}return l}var Dt=ze();function qe(){function e(t,r){return r}return e}var Je=qe();function xt({rules:e,modifiers:t,shortcuts:r}){let n=ze(e,t,r),l=qe();return {useRegle:n,inferRules:l}}
|
|
2
|
-
export{
|
|
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}}
|
|
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
|
@@ -75,8 +75,6 @@ function isDate(value) {
|
|
|
75
75
|
let possibleDate = null;
|
|
76
76
|
if (value instanceof Date) {
|
|
77
77
|
possibleDate = value;
|
|
78
|
-
} else if (typeof value === "number" && !isNaN(value)) {
|
|
79
|
-
possibleDate = new Date(value);
|
|
80
78
|
} else if (typeof value === "string") {
|
|
81
79
|
const date = new Date(value);
|
|
82
80
|
if (date.toString() === "Invalid Date") {
|
|
@@ -90,6 +88,22 @@ function isDate(value) {
|
|
|
90
88
|
}
|
|
91
89
|
}
|
|
92
90
|
|
|
91
|
+
// ../shared/utils/toDate.ts
|
|
92
|
+
function toDate(argument) {
|
|
93
|
+
const argStr = Object.prototype.toString.call(argument);
|
|
94
|
+
if (argument == null) {
|
|
95
|
+
return /* @__PURE__ */ new Date(NaN);
|
|
96
|
+
} else if (argument instanceof Date || typeof argument === "object" && argStr === "[object Date]") {
|
|
97
|
+
return new Date(argument.getTime());
|
|
98
|
+
} else if (typeof argument === "number" || argStr === "[object Number]") {
|
|
99
|
+
return new Date(argument);
|
|
100
|
+
} else if (typeof argument === "string" || argStr === "[object String]") {
|
|
101
|
+
return new Date(argument);
|
|
102
|
+
} else {
|
|
103
|
+
return /* @__PURE__ */ new Date(NaN);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
93
107
|
// src/types/rules/rule.internal.types.ts
|
|
94
108
|
var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
|
|
95
109
|
InternalRuleType2["Inline"] = "__inline";
|
|
@@ -866,7 +880,13 @@ function createReactiveFieldStatus({
|
|
|
866
880
|
const $edited = computed(() => {
|
|
867
881
|
if ($dirty.value) {
|
|
868
882
|
if (isDate(initialState.value) && isDate(state.value)) {
|
|
869
|
-
return initialState.value.getDate() !== state.value.getDate();
|
|
883
|
+
return toDate(initialState.value).getDate() !== toDate(state.value).getDate();
|
|
884
|
+
}
|
|
885
|
+
if (initialState.value == null) {
|
|
886
|
+
return !!state.value;
|
|
887
|
+
}
|
|
888
|
+
if (Array.isArray(state.value) && Array.isArray(initialState.value)) {
|
|
889
|
+
return state.value.length !== initialState.value.length;
|
|
870
890
|
}
|
|
871
891
|
return initialState.value !== state.value;
|
|
872
892
|
}
|
|
@@ -1056,6 +1076,7 @@ function createReactiveFieldStatus({
|
|
|
1056
1076
|
scopeState.$dirty.value = false;
|
|
1057
1077
|
scopeState.triggerPunishment.value = false;
|
|
1058
1078
|
storage.setDirtyEntry(path, false);
|
|
1079
|
+
initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
|
|
1059
1080
|
Object.entries($rules.value).forEach(([_, rule]) => {
|
|
1060
1081
|
rule.$reset();
|
|
1061
1082
|
});
|
|
@@ -1193,7 +1214,7 @@ function createCollectionElement({
|
|
|
1193
1214
|
storage,
|
|
1194
1215
|
options,
|
|
1195
1216
|
externalErrors: toRef(externalErrors?.value ?? [], index),
|
|
1196
|
-
initialState
|
|
1217
|
+
initialState,
|
|
1197
1218
|
shortcuts,
|
|
1198
1219
|
fieldName
|
|
1199
1220
|
});
|
|
@@ -1276,6 +1297,7 @@ function createReactiveCollectionStatus({
|
|
|
1276
1297
|
if (scope2) {
|
|
1277
1298
|
collectionScopes.push(scope2);
|
|
1278
1299
|
}
|
|
1300
|
+
const initialStateRef = toRef(initialState.value ?? [], index);
|
|
1279
1301
|
const element = createCollectionElement({
|
|
1280
1302
|
$id: $id.value,
|
|
1281
1303
|
path,
|
|
@@ -1286,7 +1308,7 @@ function createReactiveCollectionStatus({
|
|
|
1286
1308
|
options,
|
|
1287
1309
|
storage,
|
|
1288
1310
|
externalErrors: toRef(externalErrors?.value ?? {}, `$each`),
|
|
1289
|
-
initialState:
|
|
1311
|
+
initialState: initialStateRef,
|
|
1290
1312
|
shortcuts,
|
|
1291
1313
|
fieldName
|
|
1292
1314
|
});
|
|
@@ -1340,7 +1362,7 @@ function createReactiveCollectionStatus({
|
|
|
1340
1362
|
options,
|
|
1341
1363
|
storage,
|
|
1342
1364
|
externalErrors: toRef(externalErrors?.value ?? {}, `$each`),
|
|
1343
|
-
initialState:
|
|
1365
|
+
initialState: toRef(initialState.value ?? [], index),
|
|
1344
1366
|
shortcuts,
|
|
1345
1367
|
fieldName
|
|
1346
1368
|
});
|
|
@@ -1417,7 +1439,7 @@ function createReactiveCollectionStatus({
|
|
|
1417
1439
|
});
|
|
1418
1440
|
});
|
|
1419
1441
|
const $edited = computed(() => {
|
|
1420
|
-
return
|
|
1442
|
+
return !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
|
|
1421
1443
|
return statusOrField.$edited;
|
|
1422
1444
|
});
|
|
1423
1445
|
});
|
|
@@ -1623,7 +1645,7 @@ function createReactiveNestedStatus({
|
|
|
1623
1645
|
const stateRef = toRef(state.value, statePropKey);
|
|
1624
1646
|
const statePropRulesRef = toRef(() => statePropRules);
|
|
1625
1647
|
const $externalErrors = toRef(externalErrors?.value ?? {}, statePropKey);
|
|
1626
|
-
const initialStateRef =
|
|
1648
|
+
const initialStateRef = toRef(initialState?.value ?? {}, statePropKey);
|
|
1627
1649
|
return [
|
|
1628
1650
|
statePropKey,
|
|
1629
1651
|
createReactiveChildrenStatus({
|
|
@@ -1643,7 +1665,7 @@ function createReactiveNestedStatus({
|
|
|
1643
1665
|
const externalRulesStatus = Object.fromEntries(
|
|
1644
1666
|
Object.entries(unref(externalErrors) ?? {}).filter(([key, errors]) => !(key in rulesDef.value) && !!errors).map(([key]) => {
|
|
1645
1667
|
const stateRef = toRef(state.value, key);
|
|
1646
|
-
const initialStateRef =
|
|
1668
|
+
const initialStateRef = toRef(initialState?.value ?? {}, key);
|
|
1647
1669
|
return [
|
|
1648
1670
|
key,
|
|
1649
1671
|
createReactiveChildrenStatus({
|
|
@@ -1661,7 +1683,7 @@ function createReactiveNestedStatus({
|
|
|
1661
1683
|
const statesWithNoRules = Object.fromEntries(
|
|
1662
1684
|
Object.entries(state.value).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
|
|
1663
1685
|
const stateRef = toRef(state.value, key);
|
|
1664
|
-
const initialStateRef =
|
|
1686
|
+
const initialStateRef = toRef(initialState?.value ?? {}, key);
|
|
1665
1687
|
return [
|
|
1666
1688
|
key,
|
|
1667
1689
|
createReactiveChildrenStatus({
|
|
@@ -1692,7 +1714,7 @@ function createReactiveNestedStatus({
|
|
|
1692
1714
|
Object.values($fields.value).forEach((statusOrField) => {
|
|
1693
1715
|
statusOrField.$reset();
|
|
1694
1716
|
});
|
|
1695
|
-
|
|
1717
|
+
initialState.value = { ...cloneDeep(state.value) };
|
|
1696
1718
|
define$WatchExternalErrors();
|
|
1697
1719
|
}
|
|
1698
1720
|
function $touch(runCommit = true, withConditions = false) {
|
|
@@ -2047,8 +2069,7 @@ function useRootStorage({
|
|
|
2047
2069
|
scopeRules,
|
|
2048
2070
|
state,
|
|
2049
2071
|
customRules,
|
|
2050
|
-
shortcuts
|
|
2051
|
-
onReset
|
|
2072
|
+
shortcuts
|
|
2052
2073
|
}) {
|
|
2053
2074
|
const storage = useStorage();
|
|
2054
2075
|
const regle = ref();
|
|
@@ -2064,8 +2085,7 @@ function useRootStorage({
|
|
|
2064
2085
|
initialState,
|
|
2065
2086
|
shortcuts,
|
|
2066
2087
|
fieldName: "root",
|
|
2067
|
-
path: ""
|
|
2068
|
-
onReset
|
|
2088
|
+
path: ""
|
|
2069
2089
|
});
|
|
2070
2090
|
if (getCurrentScope()) {
|
|
2071
2091
|
onScopeDispose(() => {
|
|
@@ -2091,17 +2111,13 @@ function createUseRegleComposable(customRules, options, shortcuts) {
|
|
|
2091
2111
|
};
|
|
2092
2112
|
const processedState = isRef(state) ? state : ref(state);
|
|
2093
2113
|
const initialState = ref({ ...cloneDeep(processedState.value) });
|
|
2094
|
-
function onReset() {
|
|
2095
|
-
initialState.value = { ...cloneDeep(processedState.value) };
|
|
2096
|
-
}
|
|
2097
2114
|
const regle = useRootStorage({
|
|
2098
2115
|
scopeRules,
|
|
2099
2116
|
state: processedState,
|
|
2100
2117
|
options: resolvedOptions,
|
|
2101
2118
|
initialState,
|
|
2102
2119
|
customRules,
|
|
2103
|
-
shortcuts
|
|
2104
|
-
onReset
|
|
2120
|
+
shortcuts
|
|
2105
2121
|
});
|
|
2106
2122
|
return {
|
|
2107
2123
|
r$: regle.regle
|