@regle/core 0.5.7 → 0.5.8
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 +38 -80
- package/dist/regle-core.d.cts +8 -1
- package/dist/regle-core.d.ts +8 -1
- package/dist/regle-core.min.cjs +2 -2
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +38 -80
- package/package.json +6 -6
package/dist/regle-core.cjs
CHANGED
|
@@ -1669,95 +1669,53 @@ function createReactiveNestedStatus({
|
|
|
1669
1669
|
createReactiveFieldsStatus();
|
|
1670
1670
|
}
|
|
1671
1671
|
});
|
|
1672
|
-
const $dirty = vue.computed({
|
|
1673
|
-
|
|
1674
|
-
return
|
|
1675
|
-
|
|
1676
|
-
});
|
|
1677
|
-
},
|
|
1678
|
-
set() {
|
|
1679
|
-
}
|
|
1680
|
-
});
|
|
1681
|
-
const $anyDirty = vue.computed({
|
|
1682
|
-
get: () => {
|
|
1683
|
-
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1684
|
-
return statusOrField?.$dirty;
|
|
1685
|
-
});
|
|
1686
|
-
},
|
|
1687
|
-
set() {
|
|
1688
|
-
}
|
|
1689
|
-
});
|
|
1690
|
-
const $invalid = vue.computed({
|
|
1691
|
-
get: () => {
|
|
1692
|
-
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1693
|
-
return statusOrField?.$invalid;
|
|
1694
|
-
});
|
|
1695
|
-
},
|
|
1696
|
-
set() {
|
|
1697
|
-
}
|
|
1672
|
+
const $dirty = vue.computed(() => {
|
|
1673
|
+
return !!Object.entries($fields.value).length && Object.entries($fields.value).every(([key, statusOrField]) => {
|
|
1674
|
+
return statusOrField?.$dirty;
|
|
1675
|
+
});
|
|
1698
1676
|
});
|
|
1699
|
-
const $
|
|
1700
|
-
|
|
1701
|
-
return
|
|
1702
|
-
|
|
1703
|
-
});
|
|
1704
|
-
},
|
|
1705
|
-
set() {
|
|
1706
|
-
}
|
|
1677
|
+
const $anyDirty = vue.computed(() => {
|
|
1678
|
+
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1679
|
+
return statusOrField?.$dirty;
|
|
1680
|
+
});
|
|
1707
1681
|
});
|
|
1708
|
-
const $
|
|
1709
|
-
|
|
1710
|
-
return
|
|
1711
|
-
}
|
|
1712
|
-
set() {
|
|
1713
|
-
}
|
|
1682
|
+
const $invalid = vue.computed(() => {
|
|
1683
|
+
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1684
|
+
return statusOrField?.$invalid;
|
|
1685
|
+
});
|
|
1714
1686
|
});
|
|
1715
|
-
const $
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
}
|
|
1720
|
-
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
1721
|
-
},
|
|
1722
|
-
set() {
|
|
1723
|
-
}
|
|
1687
|
+
const $valid = vue.computed(() => {
|
|
1688
|
+
return Object.entries($fields.value).every(([key, statusOrField]) => {
|
|
1689
|
+
return statusOrField?.$valid;
|
|
1690
|
+
});
|
|
1724
1691
|
});
|
|
1725
|
-
const $
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
});
|
|
1730
|
-
},
|
|
1731
|
-
set() {
|
|
1692
|
+
const $error = vue.computed(() => $anyDirty.value && !$pending.value && $invalid.value);
|
|
1693
|
+
const $ready = vue.computed(() => {
|
|
1694
|
+
if (!vue.unref(commonArgs.options.autoDirty)) {
|
|
1695
|
+
return !($invalid.value || $pending.value);
|
|
1732
1696
|
}
|
|
1697
|
+
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
1733
1698
|
});
|
|
1734
|
-
const $
|
|
1735
|
-
|
|
1736
|
-
return
|
|
1737
|
-
|
|
1738
|
-
return [key, statusOrField?.$errors];
|
|
1739
|
-
})
|
|
1740
|
-
);
|
|
1741
|
-
},
|
|
1742
|
-
set() {
|
|
1743
|
-
}
|
|
1699
|
+
const $pending = vue.computed(() => {
|
|
1700
|
+
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1701
|
+
return statusOrField?.$pending;
|
|
1702
|
+
});
|
|
1744
1703
|
});
|
|
1745
|
-
const $
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
);
|
|
1752
|
-
},
|
|
1753
|
-
set() {
|
|
1754
|
-
}
|
|
1704
|
+
const $errors = vue.computed(() => {
|
|
1705
|
+
return Object.fromEntries(
|
|
1706
|
+
Object.entries($fields.value).map(([key, statusOrField]) => {
|
|
1707
|
+
return [key, statusOrField?.$errors];
|
|
1708
|
+
})
|
|
1709
|
+
);
|
|
1755
1710
|
});
|
|
1756
|
-
const $
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1711
|
+
const $silentErrors = vue.computed(() => {
|
|
1712
|
+
return Object.fromEntries(
|
|
1713
|
+
Object.entries($fields.value).map(([key, statusOrField]) => {
|
|
1714
|
+
return [key, statusOrField?.$silentErrors];
|
|
1715
|
+
})
|
|
1716
|
+
);
|
|
1760
1717
|
});
|
|
1718
|
+
const $name = vue.computed(() => fieldName);
|
|
1761
1719
|
function processShortcuts() {
|
|
1762
1720
|
if (commonArgs.shortcuts?.nested) {
|
|
1763
1721
|
Object.entries(commonArgs.shortcuts.nested).forEach(([key, value]) => {
|
package/dist/regle-core.d.cts
CHANGED
|
@@ -397,6 +397,11 @@ type AddDollarToOptions<T extends Record<string, any>> = {
|
|
|
397
397
|
};
|
|
398
398
|
|
|
399
399
|
interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> = EmptyObject, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}, TShortcuts extends RegleShortcutDefinition = {}> {
|
|
400
|
+
/**
|
|
401
|
+
* r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display informations.
|
|
402
|
+
*
|
|
403
|
+
* To see the list of properties: {@link https://www.reglejs.dev/core-concepts/validation-properties}
|
|
404
|
+
*/
|
|
400
405
|
r$: RegleRoot<TState, TRules, TValidationGroups, TShortcuts>;
|
|
401
406
|
}
|
|
402
407
|
type isDeepExact<T, U> = {
|
|
@@ -430,7 +435,7 @@ type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts e
|
|
|
430
435
|
*
|
|
431
436
|
* @param state - This can be a plain object, a ref, a reactive object, or a structure containing nested refs.
|
|
432
437
|
* @param rules - These should align with the structure of your state.
|
|
433
|
-
* @param modifiers - Customize
|
|
438
|
+
* @param modifiers - Customize regle behaviour
|
|
434
439
|
*
|
|
435
440
|
* ```ts
|
|
436
441
|
* import { useRegle } from '@regle/core';
|
|
@@ -1258,7 +1263,9 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
1258
1263
|
readonly $errors: RegleErrorTree<TState>;
|
|
1259
1264
|
/** Collection of all the error messages, collected for all children properties. */
|
|
1260
1265
|
readonly $silentErrors: RegleErrorTree<TState>;
|
|
1266
|
+
/** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
1261
1267
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
1268
|
+
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
1262
1269
|
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
1263
1270
|
} & ([TShortcuts['nested']] extends [never] ? {} : {
|
|
1264
1271
|
[K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]>;
|
package/dist/regle-core.d.ts
CHANGED
|
@@ -397,6 +397,11 @@ type AddDollarToOptions<T extends Record<string, any>> = {
|
|
|
397
397
|
};
|
|
398
398
|
|
|
399
399
|
interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> = EmptyObject, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}, TShortcuts extends RegleShortcutDefinition = {}> {
|
|
400
|
+
/**
|
|
401
|
+
* r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display informations.
|
|
402
|
+
*
|
|
403
|
+
* To see the list of properties: {@link https://www.reglejs.dev/core-concepts/validation-properties}
|
|
404
|
+
*/
|
|
400
405
|
r$: RegleRoot<TState, TRules, TValidationGroups, TShortcuts>;
|
|
401
406
|
}
|
|
402
407
|
type isDeepExact<T, U> = {
|
|
@@ -430,7 +435,7 @@ type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts e
|
|
|
430
435
|
*
|
|
431
436
|
* @param state - This can be a plain object, a ref, a reactive object, or a structure containing nested refs.
|
|
432
437
|
* @param rules - These should align with the structure of your state.
|
|
433
|
-
* @param modifiers - Customize
|
|
438
|
+
* @param modifiers - Customize regle behaviour
|
|
434
439
|
*
|
|
435
440
|
* ```ts
|
|
436
441
|
* import { useRegle } from '@regle/core';
|
|
@@ -1258,7 +1263,9 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
|
|
|
1258
1263
|
readonly $errors: RegleErrorTree<TState>;
|
|
1259
1264
|
/** Collection of all the error messages, collected for all children properties. */
|
|
1260
1265
|
readonly $silentErrors: RegleErrorTree<TState>;
|
|
1266
|
+
/** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
1261
1267
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
1268
|
+
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
1262
1269
|
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
1263
1270
|
} & ([TShortcuts['nested']] extends [never] ? {} : {
|
|
1264
1271
|
[K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]>;
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function z(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 Ke=Symbol("regle-rule");function bt(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function H(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>H(n)))),t=="Map"&&(r=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,bt(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=H(e[n]);}return r}var Ce=(t=>(t.Inline="__inline",t.Async="__async",t))(Ce||{});function et(e,r){return e.some(t=>t[r])}function tt(e,r){return e.reduce((t,n)=>{let l=n[r]||[];return t.concat(l)},[])}function B(e){try{return e.map(r=>vue.toValue(r))}catch{return []}}function rt(e){return e.map(r=>r instanceof Function?vue.computed(r):vue.isRef(r)?r:vue.toRef(()=>r))}function nt(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(y=>y.trim()).filter(y=>y.length>0).length:0}function Ie(e,...r){let{validator:t,type:n}=e,l=n==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(d,...S){return e.validator(d,...B(S.length?S:r))},message(d){return typeof e.message=="function"?e.message({...d,$params:B(d?.$params?.length?d.$params:r)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:B(d?.$params?.length?d.$params:r)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:B(d?.$params?.length?d.$params:r)}):e.tooltip??[]},exec(d){let S=e.validator(d,...B(r)),v;return S instanceof Promise?S.then(D=>(v=D,typeof v=="object"&&"$valid"in v?v.$valid:typeof v=="boolean"?v:!1)):(v=S,typeof v=="object"&&"$valid"in v?v.$valid:typeof v=="boolean"?v:!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:rt(r),_brand:Ke}}function Pe(e){if(typeof e.validator=="function"){let t=Ie(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(nt(e.validator)>1){let l=function(...R){return Ie(e,...R)};return l.validator=t.validator,l.message=t.message,l.active=t.active,l.tooltip=t.tooltip,l.type=t.type,l.exec=t.exec,l._validator=t.validator,l._message=t.message,l._active=t.active,l._tooltip=t.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return t}throw new Error("Validator must be a function")}function we(){let e=vue.shallowRef(new Map),r=vue.shallowRef(new Map),t=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),R=vue.shallowRef(new Map);function y(u){let i=r.value.get(u);if(i)return i;{let c=vue.ref({});return r.value.set(u,c),c}}function d(u){let i=t.value.get(u);if(i)return i;{let c=vue.ref([]);return t.value.set(u,c),c}}function S(u,i,c){R.value.set(`${u}-${i}`,c);}function v(u,i){return R.value.get(`${u}-${i}`)}function D(u,i){u&&i!=null&&R.value.delete(`${u}-${i}`);}function F(u,i){n.value.set(u,i);}function O(u){return n.value.get(u)??!1}function a(u,i){e.value.set(u,i);}function E(u,i){let c=e.value.get(u);return c?C(i,c)?{valid:!0}:{valid:!1}:void 0}function C(u,i){let c=Object.keys(i),j=Object.keys(u);return j.length!==c.length||!j.every(_=>c.includes(_))?!1:j.every(_=>{let P=u[_],b=i[_];return !b||!P||typeof P=="function"||typeof b=="function"||typeof P=="number"||typeof P=="boolean"?!1:P._params?P._params?.every((W,m)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=B(b._params),V=B(P._params);return I?.[m]===V?.[m]}}):!0})}function M(u){let i=l.value.get(u);if(i)return i;{let c=vue.ref(!1),j=vue.ref(!0),k=vue.ref({}),_=vue.ref(!1);return l.value.set(u,{$pending:c,$valid:j,$metadata:k,$validating:_}),{$pending:c,$valid:j,$metadata:k,$validating:_}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),n.value.clear(),l.value.clear(),R.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:F,checkRuleDeclEntry:E,getDirtyState:O,trySetRuleStatusRef:M,getFieldsEntry:y,getCollectionsEntry:d,getArrayStatus:v,addArrayStatus:S,deleteArrayStatus:D,arrayStatusStorage:R}}function Z(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function at(e){return e.value instanceof Date||e.value instanceof File?!1:Z(e.value)}function Oe(e,r,t){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(r,t??0)):l=e,{scope:n,unwrapped:l}}function $e(e,r,t){let n,l=(...R)=>new Promise(y=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...R])).then(y);},r);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Ot(e,r){let t=String(e).split("."),n=String(r).split(".");for(let l=0;l<Math.min(t.length,n.length);l++){let R=Number(t[l]),y=Number(n[l]);if(R>y)return 1;if(y>R)return -1;if(!isNaN(R)&&isNaN(y))return 1;if(isNaN(R)&&!isNaN(y))return -1}return 0}var Se=Ot(vue.version,"3.5.0")!==-1;function At(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?At():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function lt(e,r){return Z(e.value)&&Z(r.value)&&!Object.entries(r.value).some(t=>fe(t))}function ot(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function ut(e){return !!e.value&&Z(e.value)}function fe(e){return Z(e)&&"_validator"in e}function Re(e){return typeof e.value!="function"}function st(e){return Z(e)&&"$fields"in e}function Ae({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,n])=>r||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function it({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function ct({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:R,storage:y,$debounce:d,modifiers:S}){let v=vue.effectScope(),D={},F,O=vue.ref(!1),{$pending:a,$valid:E,$metadata:C,$validating:M}=y.trySetRuleStatusRef(`${R}.${n}`);function u(){v=vue.effectScope(),D=v.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:E.value,$invalid:!E.value,$pending:a.value},$params:x.value,...C.value})),W=vue.computed(()=>Re(t)?typeof t.value.active=="function"?t.value.active(b.value):!!t.value.active:!0);function m(o){let s="",$=r?r[n]?.[o]:void 0;if($&&(typeof $=="function"?s=$(b.value):s=$),Re(t)){let f=`_${o}_patched`;$&&!t.value[f]||(typeof t.value[o]=="function"?s=t.value[o](b.value):s=t.value[o]??"");}return s}let I=vue.computed(()=>{let o=m("message");return z(o)&&(o="This field is not valid"),o}),V=vue.computed(()=>m("tooltip")),Q=vue.computed(()=>Re(t)&&t.value.type?t.value.type:n),K=vue.computed(()=>Re(t)?t.value.validator:t.value),x=vue.computed(()=>typeof t.value=="function"?[]:B(t.value._params??[])),w=vue.computed(()=>`${R}.${Q.value}`);return {$active:W,$message:I,$type:Q,$validator:K,$params:x,$path:w,$tooltip:V}}),F=vue.watch(D?.$params,()=>{(S.$autoDirty.value||S.$rewardEarly.value&&e.$error.value)&&k();});}u();function i(){E.value=!0,e.$dirty.value&&(a.value=!0);}async function c(){let b=!1;try{let W=D.$validator.value,m=W(l.value,...D.$params.value),I=l.value;i();let V;if(m instanceof Promise?V=await m:V=m,l.value!==I)return !0;if(typeof V=="boolean")b=V;else {let{$valid:Q,...K}=V;b=Q,C.value=K;}}catch{b=!1;}finally{a.value=!1;}return b}let j=$e(c,d??200);async function k(){try{M.value=!0;let b=!1;if(fe(t.value)&&t.value._async)b=await j();else {let W=D.$validator.value,m=W(l.value,...D.$params.value);if(m 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(m!=null)if(typeof m=="boolean")b=m;else {let{$valid:I,...V}=m;b=I,C.value=V;}}return E.value=b,b}catch{return !1}finally{M.value=!1;}}function _(){E.value=!0,C.value={},a.value=!1,M.value=!1,u();}function P(){F(),v.stop(),v=vue.effectScope();}return vue.reactive({...D,$pending:a,$valid:E,$metadata:C,$haveAsync:O,$validating:M,$validate:k,$unwatch:P,$watch:u,$reset:_})}function Te({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:R,options:y,externalErrors:d,onUnwatch:S,$isArray:v,initialState:D,shortcuts:F}){let O=vue.effectScope(),a,E=[],C,M,u,i,c=()=>{};function j(){let g=r.value,A=R.checkRuleDeclEntry(n,g);I.value=Object.fromEntries(Object.entries(g).filter(([h])=>h.startsWith("$"))),P(),m.value=Object.fromEntries(Object.entries(r.value).filter(([h])=>!h.startsWith("$")).map(([h,p])=>{if(p){let N=vue.toRef(()=>p);return [h,ct({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:t,rule:N,ruleKey:h,state:e,path:n,storage:R,$debounce:I.value.$debounce})]}return []}).filter(h=>!!h.length)),a.processShortcuts(),k(),A?.valid!=null&&(a.$dirty.value=R.getDirtyState(n),a.$dirty.value&&c()),R.addRuleDeclEntry(n,g);}function k(){c=a.$debounce.value?$e(W,a.$debounce.value??a.$haveAnyAsyncRule?100:0):W;}function _(){m.value&&Object.entries(m.value).forEach(([g,A])=>{A.$unwatch();}),u(),a.$dirty.value&&R.setDirtyEntry(n,a.$dirty.value),C?.(),M?.(),O.stop(),O=vue.effectScope(),E.forEach(g=>g.stop()),E=[],S?.(),i?.();}function P(){m.value&&Object.entries(m.value).forEach(([g,A])=>{A.$watch();}),a=O.run(()=>{let g=vue.ref(!1),A=vue.ref(!1),h=vue.computed(()=>g.value),p=vue.computed(()=>I.value.$debounce),N=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(y.lazy)),X=vue.computed(()=>Ue.value===!0?!1:I.value.$rewardEarly!=null?I.value.$rewardEarly:vue.unref(y.rewardEarly)),ye=vue.computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:vue.unref(y.clearExternalErrorsOnChange)),Ue=vue.computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:vue.unref(y.autoDirty)),Be=vue.computed(()=>Object.entries(m.value).some(([q,te])=>te.$validating)),Le=vue.computed({get:()=>e.value,set(q){C(),e.value=q,b();}}),xe=vue.computed(()=>ve.value&&!ge.value&&g.value),He=vue.computed(()=>xe.value?Ae({field:{$dirty:g.value,$externalErrors:d?.value,$rules:m.value}}):[]),qe=vue.computed(()=>it({field:{$rules:m.value}})),ze=vue.computed(()=>Ae({field:{$dirty:g.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),Je=vue.computed(()=>!(ve.value||ge.value)),ge=vue.computed(()=>A.value||!X.value?Object.entries(m.value).some(([q,te])=>te.$pending):!1),ve=vue.computed(()=>d?.value?.length?!0:z(m.value)?!1:!X.value||X.value&&A.value?Object.entries(m.value).some(([q,te])=>!te.$valid):!1),Ye=vue.computed(()=>l),De=vue.computed(()=>d?.value?.length||z(m.value)?!1:g.value&&!z(e.value)&&!Be.value?Object.values(m.value).every(q=>q.$valid&&q.$active):!1),St=vue.computed(()=>Object.entries(m.value).some(([q,te])=>te.$haveAsync));function ht(){F?.fields&&Object.entries(F.fields).forEach(([q,te])=>{let Xe=vue.effectScope();Qe[q]=Xe.run(()=>{let Ze=vue.ref();return vue.watchEffect(()=>{Ze.value=te(vue.reactive({$dirty:g,$externalErrors:d?.value??[],$value:e,$silentValue:Le,$rules:m,$error:xe,$pending:ge,$invalid:ve,$valid:De,$errors:He,$ready:Je,$silentErrors:ze,$anyDirty:h,$tooltips:qe,$name:Ye}));}),Ze}),E.push(Xe);});}let Qe={};return vue.watch(De,q=>{q&&(A.value=!1);}),{$error:xe,$pending:ge,$invalid:ve,$valid:De,$debounce:p,$lazy:N,$errors:He,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:Ue,$clearExternalErrorsOnChange:ye,$anyDirty:h,$name:Ye,$haveAnyAsyncRule:St,$shortcuts:Qe,$validating:Be,$tooltips:qe,$dirty:g,triggerPunishment:A,processShortcuts:ht,$silentValue:Le}}),b(),u=vue.watch(a.$dirty,()=>{R.setDirtyEntry(n,a.$dirty.value);}),M=vue.watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=!1);}),i=vue.watch(a.$haveAnyAsyncRule,k);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),r.value instanceof Function&&j(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&o();},{deep:v?!0:Se?1:!0});}function W(){Object.values(m.value).forEach(g=>{g.$validate();});}let m=vue.ref({}),I=vue.ref({});j();function V(){o(),a.$dirty.value=!1,R.setDirtyEntry(n,!1),Object.entries(m.value).forEach(([g,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(m.value).forEach(g=>g.$validate());}function Q(g=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c():g&&c();}async function K(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return z(m.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(m.value).map(([p,N])=>N.$validate()))).every(p=>p.status==="fulfilled"?p.value===!0:!1),data:g}}catch{return {result:!1,data:e.value}}}function x(){_(),e.value=H(D),V();}function w(g=!0){return a.$dirty.value?e.value:g?{_null:!0}:null}function o(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&c();let{$shortcuts:s,$validating:$,$autoDirty:f,$rewardEarly:T,$clearExternalErrorsOnChange:U,$haveAnyAsyncRule:Y,$debounce:ee,$lazy:ae,...le}=a;return vue.reactive({...le,$externalErrors:d,$value:e,$rules:m,...s,$reset:V,$touch:Q,$validate:K,$unwatch:_,$watch:P,$resetAll:x,$extractDirtyFields:w,$clearExternalErrors:o})}function je({$id:e,path:r,index:t,options:n,storage:l,stateValue:R,customMessages:y,rules:d,externalErrors:S,initialState:v,shortcuts:D,fieldName:F}){let O=d.$key?d.$key:he(),a=`${r}.${String(O)}`;typeof R.value=="object"&&R.value!=null&&(R.value.$id?a=`${r}.${R.value.$id}`:Object.defineProperties(R.value,{$id:{value:O,enumerable:!1,configurable:!1,writable:!1}}));let E=me({state:R,rulesDef:vue.toRef(()=>d),customMessages:y,path:a,storage:l,options:n,externalErrors:vue.toRef(S?.value??[],t),initialState:v?.[t],shortcuts:D,fieldName:F});if(E){let C=R.value?.$id;E.$id=C??String(O),l.addArrayStatus(e,E.$id,E);}return E}function dt({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:y,initialState:d,shortcuts:S,fieldName:v}){let D=vue.effectScope(),F,O=vue.effectScope(),a,E=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let C=vue.ref(),M=vue.ref(e.value),u,i=vue.ref({}),c=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(s=>typeof s!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(s=>fe(s)):!1)})),j(),P();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=he(),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&&(M.value=i.value.$value,Array.isArray(e.value)?c.value=e.value.map((o,s)=>{let{scope:$,unwrapped:f}=Oe(r.value.$each,vue.toRef(()=>o),s);$&&E.push($);let T=je({$id:C.value,path:n,customMessages:t,rules:f??{},stateValue:vue.toRef(()=>o),index:s,options:R,storage:l,externalErrors:vue.toRef(y?.value??{},"$each"),initialState:d?.[s],shortcuts:S,fieldName:v});return T||null}).filter(o=>!!o):c.value=[],i.value=Te({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:vue.toRef(y?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:S,fieldName:v}));}function k(){if(Array.isArray(e.value)){let o=H(c.value);c.value=e.value.map((s,$)=>{let f=vue.toRef(()=>s);if(s.$id&&c.value.find(T=>T.$id===s.$id)){let T=l.getArrayStatus(C.value,s.$id);return T?(T.$value=f,T):null}else {let{scope:T,unwrapped:U}=Oe(r.value.$each,f,$);if(T&&E.push(T),U){let Y=je({$id:C.value,path:n,customMessages:t,rules:U,stateValue:f,index:$,options:R,storage:l,externalErrors:vue.toRef(y?.value??{},"$each"),initialState:d?.[$],shortcuts:S,fieldName:v});return Y||null}}}).filter(s=>!!s),o.filter(s=>!e.value.find($=>s.$id===$.$id)).forEach((s,$)=>{l.deleteArrayStatus(C.value,$.toString());});}else c.value=[];}function _(){u=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():k();},{deep:Se?1:!0,flush:"pre"});}function P(){_(),D=vue.effectScope(),F=D.run(()=>{let o=vue.computed({get:()=>e.value,set(p){u(),e.value=p,_();}}),s=vue.computed(()=>i.value.$dirty&&c.value.every(p=>p.$dirty)),$=vue.computed(()=>i.value.$anyDirty||c.value.some(p=>p.$dirty)),f=vue.computed(()=>i.value.$invalid||c.value.some(p=>p.$invalid)),T=vue.computed(()=>(z(i.value.$rules)?!0:i.value.$valid)&&c.value.every(p=>p.$valid)),U=vue.computed(()=>i.value.$error||c.value.some(p=>p.$error)),Y=vue.computed(()=>!(f.value||ee.value)),ee=vue.computed(()=>i.value.$pending||c.value.some(p=>p.$pending)),ae=vue.computed(()=>({$self:i.value.$errors,$each:c.value.map(p=>p.$errors)})),le=vue.computed(()=>({$self:i.value.$silentErrors,$each:c.value.map(p=>p.$silentErrors)})),g=vue.computed(()=>v);function A(){S?.collections&&Object.entries(S?.collections).forEach(([p,N])=>{let X=vue.effectScope();h[p]=X.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=N(vue.reactive({$dirty:s,$error:U,$silentValue:o,$pending:ee,$invalid:f,$valid:T,$errors:ae,$ready:Y,$silentErrors:le,$anyDirty:$,$name:g,$each:c,$field:i,$value:e}));}),ye}),E.push(X);});}let h={};return A(),{$dirty:s,$anyDirty:$,$invalid:f,$valid:T,$error:U,$pending:ee,$errors:ae,$silentErrors:le,$ready:Y,$name:g,$shortcuts:h,$silentValue:o}}),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`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),c.value&&c.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),D.stop(),D=vue.effectScope(),O.stop(),O=vue.effectScope(!0),E.forEach(o=>o.stop()),E=[];}function W(o=!0,s=!1){i.value.$touch(o,s),c.value.forEach($=>{$.$touch(o,s);});}function m(){i.value.$reset(),c.value.forEach(o=>{o.$reset();});}async function I(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...c.value.map(f=>f.$validate())])).every(f=>f.status==="fulfilled"?f.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function V(){i.value.$clearExternalErrors(),c.value.forEach(o=>{o.$clearExternalErrors();});}function Q(o=!0){let s=c.value.map($=>{if(st($))return $.$extractDirtyFields(o)});return o&&s.every($=>z($))&&(s=[]),s}function K(){b(),e.value=H(d),m();}let{$shortcuts:x,...w}=F;return vue.reactive({$field:i,...w,...x,$each:c,$value:e,$validate:I,$unwatch:b,$watch:P,$touch:W,$reset:m,$resetAll:K,$extractDirtyFields:Q,$clearExternalErrors:V})}function Ge({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:R,initialState:y,fieldName:d,...S}){let v=vue.effectScope(),D,F=[],O=null,a=null,E=null;async function M(x=!0){let w=Object.entries(e.value),o=Object.fromEntries(w.filter(([f,T])=>!!T).map(([f,T])=>{if(T){let U=vue.toRef(r.value,f),Y=vue.toRef(()=>T),ee=vue.toRef(l?.value??{},f);return [f,me({state:U,rulesDef:Y,path:t?`${t}.${f}`:f,externalErrors:ee,initialState:y?.[f],fieldName:f,...S})]}return []})),s=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([f,T])=>!(f in e.value)&&!!T).map(([f])=>{let T=vue.toRef(r.value,f);return [f,me({state:T,rulesDef:vue.computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:vue.toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]})),$=Object.fromEntries(Object.entries(r.value).filter(([f])=>!(f in e.value)&&!(f in(s.value??{}))).map(([f])=>{let T=vue.toRef(r.value,f);return [f,me({state:T,rulesDef:vue.computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:vue.toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]}));u.value={...o,...s,...$},x&&_();}let u=S.storage.getFieldsEntry(t);M();function i(){a?.(),Object.values(u.value).forEach(x=>{x.$reset();}),j();}function c(x=!0,w=!1){Object.values(u.value).forEach(o=>{o.$touch(x,w);});}function j(){l?.value&&(a=vue.watch(l,()=>{P(),M();},{deep:!0}));}function k(){E=vue.watch(r,()=>{P(),M(),c(!0,!0);},{flush:"sync"});}function _(){n&&(O?.(),O=vue.watch(n,()=>{P(),M();},{deep:!0,flush:"post"}),j()),k(),v=vue.effectScope(),D=v.run(()=>{let x=vue.computed({get:()=>r.value,set(h){P(),r.value=h,M();}}),w=vue.computed({get:()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([h,p])=>p?.$dirty),set(){}}),o=vue.computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$dirty),set(){}}),s=vue.computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$invalid),set(){}}),$=vue.computed({get:()=>Object.entries(u.value).every(([h,p])=>p?.$valid),set(){}}),f=vue.computed({get:()=>o.value&&!U.value&&s.value,set(){}}),T=vue.computed({get:()=>vue.unref(S.options.autoDirty)?o.value&&!(s.value||U.value):!(s.value||U.value),set(){}}),U=vue.computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$pending),set(){}}),Y=vue.computed({get:()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$errors])),set(){}}),ee=vue.computed({get:()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$silentErrors])),set(){}}),ae=vue.computed({get:()=>d,set(){}});function le(){S.shortcuts?.nested&&Object.entries(S.shortcuts.nested).forEach(([h,p])=>{let N=vue.effectScope();A[h]=N.run(()=>{let X=vue.ref();return vue.watchEffect(()=>{X.value=p(vue.reactive({$dirty:w,$value:r,$silentValue:x,$error:f,$pending:U,$invalid:s,$valid:$,$ready:T,$anyDirty:o,$name:ae,$silentErrors:ee,$errors:Y,$fields:u}));}),X}),F.push(N);});}let g=vue.computed({get:()=>R?Object.fromEntries(Object.entries(R?.(u.value)??{}).map(([h,p])=>p.length?[h,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(N=>[N,et(p,N)])),...Object.fromEntries(["$errors","$silentErrors"].map(N=>[N,tt(p,N)]))}]:[])):{},set(){}}),A={};return le(),{$dirty:w,$anyDirty:o,$invalid:s,$valid:$,$error:f,$pending:U,$errors:Y,$silentErrors:ee,$ready:T,$name:ae,$shortcuts:A,$groups:g,$silentValue:x}});}function P(){O?.(),a?.(),E?.(),F.forEach(x=>x.stop()),F=[],v.stop(),u.value&&Object.entries(u.value).forEach(([x,w])=>{w.$unwatch();});}function b(){Object.entries(u.value).forEach(([x,w])=>{w.$clearExternalErrors();});}async function W(){P(),r.value=H({...y??{}}),i(),M();}function m(x){return x.filter(([w,o])=>Z(o)?!(o&&typeof o=="object"&&"_null"in o)&&!z(o):Array.isArray(o)?o.length:!0)}function I(x=!0){let w=Object.entries(u.value).map(([o,s])=>[o,s.$extractDirtyFields(x)]);return x&&(w=m(w)),Object.fromEntries(w)}async function V(){try{let x=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:x}}catch{return {result:!1,data:r.value}}}let{$shortcuts:Q,...K}=D;return vue.reactive({...K,...Q,$fields:u,$value:r,$resetAll:W,$reset:i,$touch:c,$validate:V,$unwatch:P,$watch:_,$clearExternalErrors:b,$extractDirtyFields:I})}function me({rulesDef:e,externalErrors:r,...t}){return ot(e,t.state)?dt({rulesDef:e,externalErrors:r,...t}):lt(t.state,e)&&at(t.state)?Ge({rulesDef:e,externalErrors:r,...t}):ut(e)?Te({rulesDef:e,externalErrors:r,...t}):null}function ce({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:R}){let y=we(),d=vue.ref();return d.value=Ge({rootRules:t,rulesDef:t,state:n,customMessages:l?.(),storage:y,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:R,fieldName:"root",path:""}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{d.value?.$unwatch();}),vue.reactive({regle:d})}function Ne(e,r,t){let n={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function l(R,y,d){let S=vue.isRef(y)?y:vue.computed(typeof y=="function"?y:()=>y),v={...n,...d},D=vue.isRef(R)?R:vue.ref(R),F={...H(D.value)};return {r$:ce({scopeRules:S,state:D,options:v,initialState:F,customRules:e,shortcuts:t}).regle}}return l}var vt=Ne();function ke(){function e(r,t){return t}return e}var We=ke();function $t({rules:e,modifiers:r,shortcuts:t}){let n=Ne(e,r,t),l=ke();return {useRegle:n,inferRules:l}}
|
|
2
|
-
exports.InternalRuleType=Ce;exports.createRule=Pe;exports.defineRegleConfig
|
|
1
|
+
'use strict';var vue=require('vue');function z(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 Ke=Symbol("regle-rule");function bt(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function H(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>H(n)))),t=="Map"&&(r=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,bt(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=H(e[n]);}return r}var Ce=(t=>(t.Inline="__inline",t.Async="__async",t))(Ce||{});function et(e,r){return e.some(t=>t[r])}function tt(e,r){return e.reduce((t,n)=>{let l=n[r]||[];return t.concat(l)},[])}function B(e){try{return e.map(r=>vue.toValue(r))}catch{return []}}function rt(e){return e.map(r=>r instanceof Function?vue.computed(r):vue.isRef(r)?r:vue.toRef(()=>r))}function nt(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(y=>y.trim()).filter(y=>y.length>0).length:0}function Ie(e,...r){let{validator:t,type:n}=e,l=n==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(d,...S){return e.validator(d,...B(S.length?S:r))},message(d){return typeof e.message=="function"?e.message({...d,$params:B(d?.$params?.length?d.$params:r)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:B(d?.$params?.length?d.$params:r)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:B(d?.$params?.length?d.$params:r)}):e.tooltip??[]},exec(d){let S=e.validator(d,...B(r)),$;return S instanceof Promise?S.then(D=>($=D,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=S,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:rt(r),_brand:Ke}}function Pe(e){if(typeof e.validator=="function"){let t=Ie(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(nt(e.validator)>1){let l=function(...R){return Ie(e,...R)};return l.validator=t.validator,l.message=t.message,l.active=t.active,l.tooltip=t.tooltip,l.type=t.type,l.exec=t.exec,l._validator=t.validator,l._message=t.message,l._active=t.active,l._tooltip=t.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return t}throw new Error("Validator must be a function")}function we(){let e=vue.shallowRef(new Map),r=vue.shallowRef(new Map),t=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),R=vue.shallowRef(new Map);function y(u){let i=r.value.get(u);if(i)return i;{let c=vue.ref({});return r.value.set(u,c),c}}function d(u){let i=t.value.get(u);if(i)return i;{let c=vue.ref([]);return t.value.set(u,c),c}}function S(u,i,c){R.value.set(`${u}-${i}`,c);}function $(u,i){return R.value.get(`${u}-${i}`)}function D(u,i){u&&i!=null&&R.value.delete(`${u}-${i}`);}function F(u,i){n.value.set(u,i);}function O(u){return n.value.get(u)??!1}function a(u,i){e.value.set(u,i);}function E(u,i){let c=e.value.get(u);return c?C(i,c)?{valid:!0}:{valid:!1}:void 0}function C(u,i){let c=Object.keys(i),j=Object.keys(u);return j.length!==c.length||!j.every(_=>c.includes(_))?!1:j.every(_=>{let P=u[_],b=i[_];return !b||!P||typeof P=="function"||typeof b=="function"||typeof P=="number"||typeof P=="boolean"?!1:P._params?P._params?.every((W,m)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=B(b._params),V=B(P._params);return I?.[m]===V?.[m]}}):!0})}function M(u){let i=l.value.get(u);if(i)return i;{let c=vue.ref(!1),j=vue.ref(!0),k=vue.ref({}),_=vue.ref(!1);return l.value.set(u,{$pending:c,$valid:j,$metadata:k,$validating:_}),{$pending:c,$valid:j,$metadata:k,$validating:_}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),n.value.clear(),l.value.clear(),R.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:F,checkRuleDeclEntry:E,getDirtyState:O,trySetRuleStatusRef:M,getFieldsEntry:y,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:S,deleteArrayStatus:D,arrayStatusStorage:R}}function Z(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function at(e){return e.value instanceof Date||e.value instanceof File?!1:Z(e.value)}function Oe(e,r,t){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(r,t??0)):l=e,{scope:n,unwrapped:l}}function ge(e,r,t){let n,l=(...R)=>new Promise(y=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...R])).then(y);},r);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Ot(e,r){let t=String(e).split("."),n=String(r).split(".");for(let l=0;l<Math.min(t.length,n.length);l++){let R=Number(t[l]),y=Number(n[l]);if(R>y)return 1;if(y>R)return -1;if(!isNaN(R)&&isNaN(y))return 1;if(isNaN(R)&&!isNaN(y))return -1}return 0}var Se=Ot(vue.version,"3.5.0")!==-1;function At(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?At():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function lt(e,r){return Z(e.value)&&Z(r.value)&&!Object.entries(r.value).some(t=>fe(t))}function ot(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function ut(e){return !!e.value&&Z(e.value)}function fe(e){return Z(e)&&"_validator"in e}function Re(e){return typeof e.value!="function"}function st(e){return Z(e)&&"$fields"in e}function Ae({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,n])=>r||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function it({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function ct({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:R,storage:y,$debounce:d,modifiers:S}){let $=vue.effectScope(),D={},F,O=vue.ref(!1),{$pending:a,$valid:E,$metadata:C,$validating:M}=y.trySetRuleStatusRef(`${R}.${n}`);function u(){$=vue.effectScope(),D=$.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:E.value,$invalid:!E.value,$pending:a.value},$params:x.value,...C.value})),W=vue.computed(()=>Re(t)?typeof t.value.active=="function"?t.value.active(b.value):!!t.value.active:!0);function m(o){let s="",g=r?r[n]?.[o]:void 0;if(g&&(typeof g=="function"?s=g(b.value):s=g),Re(t)){let f=`_${o}_patched`;g&&!t.value[f]||(typeof t.value[o]=="function"?s=t.value[o](b.value):s=t.value[o]??"");}return s}let I=vue.computed(()=>{let o=m("message");return z(o)&&(o="This field is not valid"),o}),V=vue.computed(()=>m("tooltip")),Q=vue.computed(()=>Re(t)&&t.value.type?t.value.type:n),K=vue.computed(()=>Re(t)?t.value.validator:t.value),x=vue.computed(()=>typeof t.value=="function"?[]:B(t.value._params??[])),w=vue.computed(()=>`${R}.${Q.value}`);return {$active:W,$message:I,$type:Q,$validator:K,$params:x,$path:w,$tooltip:V}}),F=vue.watch(D?.$params,()=>{(S.$autoDirty.value||S.$rewardEarly.value&&e.$error.value)&&k();});}u();function i(){E.value=!0,e.$dirty.value&&(a.value=!0);}async function c(){let b=!1;try{let W=D.$validator.value,m=W(l.value,...D.$params.value),I=l.value;i();let V;if(m instanceof Promise?V=await m:V=m,l.value!==I)return !0;if(typeof V=="boolean")b=V;else {let{$valid:Q,...K}=V;b=Q,C.value=K;}}catch{b=!1;}finally{a.value=!1;}return b}let j=ge(c,d??200);async function k(){try{M.value=!0;let b=!1;if(fe(t.value)&&t.value._async)b=await j();else {let W=D.$validator.value,m=W(l.value,...D.$params.value);if(m 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(m!=null)if(typeof m=="boolean")b=m;else {let{$valid:I,...V}=m;b=I,C.value=V;}}return E.value=b,b}catch{return !1}finally{M.value=!1;}}function _(){E.value=!0,C.value={},a.value=!1,M.value=!1,u();}function P(){F(),$.stop(),$=vue.effectScope();}return vue.reactive({...D,$pending:a,$valid:E,$metadata:C,$haveAsync:O,$validating:M,$validate:k,$unwatch:P,$watch:u,$reset:_})}function Te({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:R,options:y,externalErrors:d,onUnwatch:S,$isArray:$,initialState:D,shortcuts:F}){let O=vue.effectScope(),a,E=[],C,M,u,i,c=()=>{};function j(){let v=r.value,A=R.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([h])=>h.startsWith("$"))),P(),m.value=Object.fromEntries(Object.entries(r.value).filter(([h])=>!h.startsWith("$")).map(([h,p])=>{if(p){let N=vue.toRef(()=>p);return [h,ct({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:t,rule:N,ruleKey:h,state:e,path:n,storage:R,$debounce:I.value.$debounce})]}return []}).filter(h=>!!h.length)),a.processShortcuts(),k(),A?.valid!=null&&(a.$dirty.value=R.getDirtyState(n),a.$dirty.value&&c()),R.addRuleDeclEntry(n,v);}function k(){c=a.$debounce.value?ge(W,a.$debounce.value??a.$haveAnyAsyncRule?100:0):W;}function _(){m.value&&Object.entries(m.value).forEach(([v,A])=>{A.$unwatch();}),u(),a.$dirty.value&&R.setDirtyEntry(n,a.$dirty.value),C?.(),M?.(),O.stop(),O=vue.effectScope(),E.forEach(v=>v.stop()),E=[],S?.(),i?.();}function P(){m.value&&Object.entries(m.value).forEach(([v,A])=>{A.$watch();}),a=O.run(()=>{let v=vue.ref(!1),A=vue.ref(!1),h=vue.computed(()=>v.value),p=vue.computed(()=>I.value.$debounce),N=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(y.lazy)),X=vue.computed(()=>Ue.value===!0?!1:I.value.$rewardEarly!=null?I.value.$rewardEarly:vue.unref(y.rewardEarly)),ye=vue.computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:vue.unref(y.clearExternalErrorsOnChange)),Ue=vue.computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:vue.unref(y.autoDirty)),Be=vue.computed(()=>Object.entries(m.value).some(([q,te])=>te.$validating)),Le=vue.computed({get:()=>e.value,set(q){C(),e.value=q,b();}}),xe=vue.computed(()=>$e.value&&!ve.value&&v.value),He=vue.computed(()=>xe.value?Ae({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value}}):[]),qe=vue.computed(()=>it({field:{$rules:m.value}})),ze=vue.computed(()=>Ae({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),Je=vue.computed(()=>!($e.value||ve.value)),ve=vue.computed(()=>A.value||!X.value?Object.entries(m.value).some(([q,te])=>te.$pending):!1),$e=vue.computed(()=>d?.value?.length?!0:z(m.value)?!1:!X.value||X.value&&A.value?Object.entries(m.value).some(([q,te])=>!te.$valid):!1),Ye=vue.computed(()=>l),De=vue.computed(()=>d?.value?.length||z(m.value)?!1:v.value&&!z(e.value)&&!Be.value?Object.values(m.value).every(q=>q.$valid&&q.$active):!1),St=vue.computed(()=>Object.entries(m.value).some(([q,te])=>te.$haveAsync));function ht(){F?.fields&&Object.entries(F.fields).forEach(([q,te])=>{let Xe=vue.effectScope();Qe[q]=Xe.run(()=>{let Ze=vue.ref();return vue.watchEffect(()=>{Ze.value=te(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:Le,$rules:m,$error:xe,$pending:ve,$invalid:$e,$valid:De,$errors:He,$ready:Je,$silentErrors:ze,$anyDirty:h,$tooltips:qe,$name:Ye}));}),Ze}),E.push(Xe);});}let Qe={};return vue.watch(De,q=>{q&&(A.value=!1);}),{$error:xe,$pending:ve,$invalid:$e,$valid:De,$debounce:p,$lazy:N,$errors:He,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:Ue,$clearExternalErrorsOnChange:ye,$anyDirty:h,$name:Ye,$haveAnyAsyncRule:St,$shortcuts:Qe,$validating:Be,$tooltips:qe,$dirty:v,triggerPunishment:A,processShortcuts:ht,$silentValue:Le}}),b(),u=vue.watch(a.$dirty,()=>{R.setDirtyEntry(n,a.$dirty.value);}),M=vue.watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),i=vue.watch(a.$haveAnyAsyncRule,k);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),r.value instanceof Function&&j(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&o();},{deep:$?!0:Se?1:!0});}function W(){Object.values(m.value).forEach(v=>{v.$validate();});}let m=vue.ref({}),I=vue.ref({});j();function V(){o(),a.$dirty.value=!1,R.setDirtyEntry(n,!1),Object.entries(m.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(m.value).forEach(v=>v.$validate());}function Q(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c():v&&c();}async function K(){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 z(m.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(m.value).map(([p,N])=>N.$validate()))).every(p=>p.status==="fulfilled"?p.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function x(){_(),e.value=H(D),V();}function w(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function o(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&c();let{$shortcuts:s,$validating:g,$autoDirty:f,$rewardEarly:T,$clearExternalErrorsOnChange:U,$haveAnyAsyncRule:Y,$debounce:ee,$lazy:ae,...le}=a;return vue.reactive({...le,$externalErrors:d,$value:e,$rules:m,...s,$reset:V,$touch:Q,$validate:K,$unwatch:_,$watch:P,$resetAll:x,$extractDirtyFields:w,$clearExternalErrors:o})}function je({$id:e,path:r,index:t,options:n,storage:l,stateValue:R,customMessages:y,rules:d,externalErrors:S,initialState:$,shortcuts:D,fieldName:F}){let O=d.$key?d.$key:he(),a=`${r}.${String(O)}`;typeof R.value=="object"&&R.value!=null&&(R.value.$id?a=`${r}.${R.value.$id}`:Object.defineProperties(R.value,{$id:{value:O,enumerable:!1,configurable:!1,writable:!1}}));let E=me({state:R,rulesDef:vue.toRef(()=>d),customMessages:y,path:a,storage:l,options:n,externalErrors:vue.toRef(S?.value??[],t),initialState:$?.[t],shortcuts:D,fieldName:F});if(E){let C=R.value?.$id;E.$id=C??String(O),l.addArrayStatus(e,E.$id,E);}return E}function dt({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:y,initialState:d,shortcuts:S,fieldName:$}){let D=vue.effectScope(),F,O=vue.effectScope(),a,E=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let C=vue.ref(),M=vue.ref(e.value),u,i=vue.ref({}),c=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(s=>typeof s!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(s=>fe(s)):!1)})),j(),P();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=he(),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&&(M.value=i.value.$value,Array.isArray(e.value)?c.value=e.value.map((o,s)=>{let{scope:g,unwrapped:f}=Oe(r.value.$each,vue.toRef(()=>o),s);g&&E.push(g);let T=je({$id:C.value,path:n,customMessages:t,rules:f??{},stateValue:vue.toRef(()=>o),index:s,options:R,storage:l,externalErrors:vue.toRef(y?.value??{},"$each"),initialState:d?.[s],shortcuts:S,fieldName:$});return T||null}).filter(o=>!!o):c.value=[],i.value=Te({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:vue.toRef(y?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:S,fieldName:$}));}function k(){if(Array.isArray(e.value)){let o=H(c.value);c.value=e.value.map((s,g)=>{let f=vue.toRef(()=>s);if(s.$id&&c.value.find(T=>T.$id===s.$id)){let T=l.getArrayStatus(C.value,s.$id);return T?(T.$value=f,T):null}else {let{scope:T,unwrapped:U}=Oe(r.value.$each,f,g);if(T&&E.push(T),U){let Y=je({$id:C.value,path:n,customMessages:t,rules:U,stateValue:f,index:g,options:R,storage:l,externalErrors:vue.toRef(y?.value??{},"$each"),initialState:d?.[g],shortcuts:S,fieldName:$});return Y||null}}}).filter(s=>!!s),o.filter(s=>!e.value.find(g=>s.$id===g.$id)).forEach((s,g)=>{l.deleteArrayStatus(C.value,g.toString());});}else c.value=[];}function _(){u=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():k();},{deep:Se?1:!0,flush:"pre"});}function P(){_(),D=vue.effectScope(),F=D.run(()=>{let o=vue.computed({get:()=>e.value,set(p){u(),e.value=p,_();}}),s=vue.computed(()=>i.value.$dirty&&c.value.every(p=>p.$dirty)),g=vue.computed(()=>i.value.$anyDirty||c.value.some(p=>p.$dirty)),f=vue.computed(()=>i.value.$invalid||c.value.some(p=>p.$invalid)),T=vue.computed(()=>(z(i.value.$rules)?!0:i.value.$valid)&&c.value.every(p=>p.$valid)),U=vue.computed(()=>i.value.$error||c.value.some(p=>p.$error)),Y=vue.computed(()=>!(f.value||ee.value)),ee=vue.computed(()=>i.value.$pending||c.value.some(p=>p.$pending)),ae=vue.computed(()=>({$self:i.value.$errors,$each:c.value.map(p=>p.$errors)})),le=vue.computed(()=>({$self:i.value.$silentErrors,$each:c.value.map(p=>p.$silentErrors)})),v=vue.computed(()=>$);function A(){S?.collections&&Object.entries(S?.collections).forEach(([p,N])=>{let X=vue.effectScope();h[p]=X.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=N(vue.reactive({$dirty:s,$error:U,$silentValue:o,$pending:ee,$invalid:f,$valid:T,$errors:ae,$ready:Y,$silentErrors:le,$anyDirty:g,$name:v,$each:c,$field:i,$value:e}));}),ye}),E.push(X);});}let h={};return A(),{$dirty:s,$anyDirty:g,$invalid:f,$valid:T,$error:U,$pending:ee,$errors:ae,$silentErrors:le,$ready:Y,$name:v,$shortcuts:h,$silentValue:o}}),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`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),c.value&&c.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),D.stop(),D=vue.effectScope(),O.stop(),O=vue.effectScope(!0),E.forEach(o=>o.stop()),E=[];}function W(o=!0,s=!1){i.value.$touch(o,s),c.value.forEach(g=>{g.$touch(o,s);});}function m(){i.value.$reset(),c.value.forEach(o=>{o.$reset();});}async function I(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...c.value.map(f=>f.$validate())])).every(f=>f.status==="fulfilled"?f.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function V(){i.value.$clearExternalErrors(),c.value.forEach(o=>{o.$clearExternalErrors();});}function Q(o=!0){let s=c.value.map(g=>{if(st(g))return g.$extractDirtyFields(o)});return o&&s.every(g=>z(g))&&(s=[]),s}function K(){b(),e.value=H(d),m();}let{$shortcuts:x,...w}=F;return vue.reactive({$field:i,...w,...x,$each:c,$value:e,$validate:I,$unwatch:b,$watch:P,$touch:W,$reset:m,$resetAll:K,$extractDirtyFields:Q,$clearExternalErrors:V})}function Ge({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:R,initialState:y,fieldName:d,...S}){let $=vue.effectScope(),D,F=[],O=null,a=null,E=null;async function M(x=!0){let w=Object.entries(e.value),o=Object.fromEntries(w.filter(([f,T])=>!!T).map(([f,T])=>{if(T){let U=vue.toRef(r.value,f),Y=vue.toRef(()=>T),ee=vue.toRef(l?.value??{},f);return [f,me({state:U,rulesDef:Y,path:t?`${t}.${f}`:f,externalErrors:ee,initialState:y?.[f],fieldName:f,...S})]}return []})),s=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([f,T])=>!(f in e.value)&&!!T).map(([f])=>{let T=vue.toRef(r.value,f);return [f,me({state:T,rulesDef:vue.computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:vue.toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]})),g=Object.fromEntries(Object.entries(r.value).filter(([f])=>!(f in e.value)&&!(f in(s.value??{}))).map(([f])=>{let T=vue.toRef(r.value,f);return [f,me({state:T,rulesDef:vue.computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:vue.toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]}));u.value={...o,...s,...g},x&&_();}let u=S.storage.getFieldsEntry(t);M();function i(){a?.(),Object.values(u.value).forEach(x=>{x.$reset();}),j();}function c(x=!0,w=!1){Object.values(u.value).forEach(o=>{o.$touch(x,w);});}function j(){l?.value&&(a=vue.watch(l,()=>{P(),M();},{deep:!0}));}function k(){E=vue.watch(r,()=>{P(),M(),c(!0,!0);},{flush:"sync"});}function _(){n&&(O?.(),O=vue.watch(n,()=>{P(),M();},{deep:!0,flush:"post"}),j()),k(),$=vue.effectScope(),D=$.run(()=>{let x=vue.computed({get:()=>r.value,set(h){P(),r.value=h,M();}}),w=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([h,p])=>p?.$dirty)),o=vue.computed(()=>Object.entries(u.value).some(([h,p])=>p?.$dirty)),s=vue.computed(()=>Object.entries(u.value).some(([h,p])=>p?.$invalid)),g=vue.computed(()=>Object.entries(u.value).every(([h,p])=>p?.$valid)),f=vue.computed(()=>o.value&&!U.value&&s.value),T=vue.computed(()=>vue.unref(S.options.autoDirty)?o.value&&!(s.value||U.value):!(s.value||U.value)),U=vue.computed(()=>Object.entries(u.value).some(([h,p])=>p?.$pending)),Y=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$errors]))),ee=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$silentErrors]))),ae=vue.computed(()=>d);function le(){S.shortcuts?.nested&&Object.entries(S.shortcuts.nested).forEach(([h,p])=>{let N=vue.effectScope();A[h]=N.run(()=>{let X=vue.ref();return vue.watchEffect(()=>{X.value=p(vue.reactive({$dirty:w,$value:r,$silentValue:x,$error:f,$pending:U,$invalid:s,$valid:g,$ready:T,$anyDirty:o,$name:ae,$silentErrors:ee,$errors:Y,$fields:u}));}),X}),F.push(N);});}let v=vue.computed({get:()=>R?Object.fromEntries(Object.entries(R?.(u.value)??{}).map(([h,p])=>p.length?[h,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(N=>[N,et(p,N)])),...Object.fromEntries(["$errors","$silentErrors"].map(N=>[N,tt(p,N)]))}]:[])):{},set(){}}),A={};return le(),{$dirty:w,$anyDirty:o,$invalid:s,$valid:g,$error:f,$pending:U,$errors:Y,$silentErrors:ee,$ready:T,$name:ae,$shortcuts:A,$groups:v,$silentValue:x}});}function P(){O?.(),a?.(),E?.(),F.forEach(x=>x.stop()),F=[],$.stop(),u.value&&Object.entries(u.value).forEach(([x,w])=>{w.$unwatch();});}function b(){Object.entries(u.value).forEach(([x,w])=>{w.$clearExternalErrors();});}async function W(){P(),r.value=H({...y??{}}),i(),M();}function m(x){return x.filter(([w,o])=>Z(o)?!(o&&typeof o=="object"&&"_null"in o)&&!z(o):Array.isArray(o)?o.length:!0)}function I(x=!0){let w=Object.entries(u.value).map(([o,s])=>[o,s.$extractDirtyFields(x)]);return x&&(w=m(w)),Object.fromEntries(w)}async function V(){try{let x=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:x}}catch{return {result:!1,data:r.value}}}let{$shortcuts:Q,...K}=D;return vue.reactive({...K,...Q,$fields:u,$value:r,$resetAll:W,$reset:i,$touch:c,$validate:V,$unwatch:P,$watch:_,$clearExternalErrors:b,$extractDirtyFields:I})}function me({rulesDef:e,externalErrors:r,...t}){return ot(e,t.state)?dt({rulesDef:e,externalErrors:r,...t}):lt(t.state,e)&&at(t.state)?Ge({rulesDef:e,externalErrors:r,...t}):ut(e)?Te({rulesDef:e,externalErrors:r,...t}):null}function ce({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:R}){let y=we(),d=vue.ref();return d.value=Ge({rootRules:t,rulesDef:t,state:n,customMessages:l?.(),storage:y,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:R,fieldName:"root",path:""}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{d.value?.$unwatch();}),vue.reactive({regle:d})}function Ne(e,r,t){let n={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function l(R,y,d){let S=vue.isRef(y)?y:vue.computed(typeof y=="function"?y:()=>y),$={...n,...d},D=vue.isRef(R)?R:vue.ref(R),F={...H(D.value)};return {r$:ce({scopeRules:S,state:D,options:$,initialState:F,customRules:e,shortcuts:t}).regle}}return l}var $t=Ne();function ke(){function e(r,t){return t}return e}var We=ke();function gt({rules:e,modifiers:r,shortcuts:t}){let n=Ne(e,r,t),l=ke();return {useRegle:n,inferRules:l}}
|
|
2
|
+
exports.InternalRuleType=Ce;exports.createRule=Pe;exports.defineRegleConfig=gt;exports.inferRules=We;exports.unwrapRuleParameters=B;exports.useRegle=$t;exports.useRootStorage=ce;
|
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 z(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 Ke=Symbol("regle-rule");function bt(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function H(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>H(n)))),t=="Map"&&(r=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,bt(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=H(e[n]);}return r}var Ce=(t=>(t.Inline="__inline",t.Async="__async",t))(Ce||{});function et(e,r){return e.some(t=>t[r])}function tt(e,r){return e.reduce((t,n)=>{let l=n[r]||[];return t.concat(l)},[])}function B(e){try{return e.map(r=>toValue(r))}catch{return []}}function rt(e){return e.map(r=>r instanceof Function?computed(r):isRef(r)?r:toRef(()=>r))}function nt(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(y=>y.trim()).filter(y=>y.length>0).length:0}function Ie(e,...r){let{validator:t,type:n}=e,l=n==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(d,...S){return e.validator(d,...B(S.length?S:r))},message(d){return typeof e.message=="function"?e.message({...d,$params:B(d?.$params?.length?d.$params:r)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:B(d?.$params?.length?d.$params:r)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:B(d?.$params?.length?d.$params:r)}):e.tooltip??[]},exec(d){let S=e.validator(d,...B(r)),v;return S instanceof Promise?S.then(D=>(v=D,typeof v=="object"&&"$valid"in v?v.$valid:typeof v=="boolean"?v:!1)):(v=S,typeof v=="object"&&"$valid"in v?v.$valid:typeof v=="boolean"?v:!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:rt(r),_brand:Ke}}function Pe(e){if(typeof e.validator=="function"){let t=Ie(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(nt(e.validator)>1){let l=function(...R){return Ie(e,...R)};return l.validator=t.validator,l.message=t.message,l.active=t.active,l.tooltip=t.tooltip,l.type=t.type,l.exec=t.exec,l._validator=t.validator,l._message=t.message,l._active=t.active,l._tooltip=t.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return t}throw new Error("Validator must be a function")}function we(){let e=shallowRef(new Map),r=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),R=shallowRef(new Map);function y(u){let i=r.value.get(u);if(i)return i;{let c=ref({});return r.value.set(u,c),c}}function d(u){let i=t.value.get(u);if(i)return i;{let c=ref([]);return t.value.set(u,c),c}}function S(u,i,c){R.value.set(`${u}-${i}`,c);}function v(u,i){return R.value.get(`${u}-${i}`)}function D(u,i){u&&i!=null&&R.value.delete(`${u}-${i}`);}function F(u,i){n.value.set(u,i);}function O(u){return n.value.get(u)??!1}function a(u,i){e.value.set(u,i);}function E(u,i){let c=e.value.get(u);return c?C(i,c)?{valid:!0}:{valid:!1}:void 0}function C(u,i){let c=Object.keys(i),j=Object.keys(u);return j.length!==c.length||!j.every(_=>c.includes(_))?!1:j.every(_=>{let P=u[_],b=i[_];return !b||!P||typeof P=="function"||typeof b=="function"||typeof P=="number"||typeof P=="boolean"?!1:P._params?P._params?.every((W,m)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=B(b._params),V=B(P._params);return I?.[m]===V?.[m]}}):!0})}function M(u){let i=l.value.get(u);if(i)return i;{let c=ref(!1),j=ref(!0),k=ref({}),_=ref(!1);return l.value.set(u,{$pending:c,$valid:j,$metadata:k,$validating:_}),{$pending:c,$valid:j,$metadata:k,$validating:_}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),n.value.clear(),l.value.clear(),R.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:F,checkRuleDeclEntry:E,getDirtyState:O,trySetRuleStatusRef:M,getFieldsEntry:y,getCollectionsEntry:d,getArrayStatus:v,addArrayStatus:S,deleteArrayStatus:D,arrayStatusStorage:R}}function Z(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function at(e){return e.value instanceof Date||e.value instanceof File?!1:Z(e.value)}function Oe(e,r,t){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(r,t??0)):l=e,{scope:n,unwrapped:l}}function $e(e,r,t){let n,l=(...R)=>new Promise(y=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...R])).then(y);},r);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Ot(e,r){let t=String(e).split("."),n=String(r).split(".");for(let l=0;l<Math.min(t.length,n.length);l++){let R=Number(t[l]),y=Number(n[l]);if(R>y)return 1;if(y>R)return -1;if(!isNaN(R)&&isNaN(y))return 1;if(isNaN(R)&&!isNaN(y))return -1}return 0}var Se=Ot(version,"3.5.0")!==-1;function At(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?At():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function lt(e,r){return Z(e.value)&&Z(r.value)&&!Object.entries(r.value).some(t=>fe(t))}function ot(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function ut(e){return !!e.value&&Z(e.value)}function fe(e){return Z(e)&&"_validator"in e}function Re(e){return typeof e.value!="function"}function st(e){return Z(e)&&"$fields"in e}function Ae({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,n])=>r||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function it({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function ct({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:R,storage:y,$debounce:d,modifiers:S}){let v=effectScope(),D={},F,O=ref(!1),{$pending:a,$valid:E,$metadata:C,$validating:M}=y.trySetRuleStatusRef(`${R}.${n}`);function u(){v=effectScope(),D=v.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:E.value,$invalid:!E.value,$pending:a.value},$params:x.value,...C.value})),W=computed(()=>Re(t)?typeof t.value.active=="function"?t.value.active(b.value):!!t.value.active:!0);function m(o){let s="",$=r?r[n]?.[o]:void 0;if($&&(typeof $=="function"?s=$(b.value):s=$),Re(t)){let f=`_${o}_patched`;$&&!t.value[f]||(typeof t.value[o]=="function"?s=t.value[o](b.value):s=t.value[o]??"");}return s}let I=computed(()=>{let o=m("message");return z(o)&&(o="This field is not valid"),o}),V=computed(()=>m("tooltip")),Q=computed(()=>Re(t)&&t.value.type?t.value.type:n),K=computed(()=>Re(t)?t.value.validator:t.value),x=computed(()=>typeof t.value=="function"?[]:B(t.value._params??[])),w=computed(()=>`${R}.${Q.value}`);return {$active:W,$message:I,$type:Q,$validator:K,$params:x,$path:w,$tooltip:V}}),F=watch(D?.$params,()=>{(S.$autoDirty.value||S.$rewardEarly.value&&e.$error.value)&&k();});}u();function i(){E.value=!0,e.$dirty.value&&(a.value=!0);}async function c(){let b=!1;try{let W=D.$validator.value,m=W(l.value,...D.$params.value),I=l.value;i();let V;if(m instanceof Promise?V=await m:V=m,l.value!==I)return !0;if(typeof V=="boolean")b=V;else {let{$valid:Q,...K}=V;b=Q,C.value=K;}}catch{b=!1;}finally{a.value=!1;}return b}let j=$e(c,d??200);async function k(){try{M.value=!0;let b=!1;if(fe(t.value)&&t.value._async)b=await j();else {let W=D.$validator.value,m=W(l.value,...D.$params.value);if(m 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(m!=null)if(typeof m=="boolean")b=m;else {let{$valid:I,...V}=m;b=I,C.value=V;}}return E.value=b,b}catch{return !1}finally{M.value=!1;}}function _(){E.value=!0,C.value={},a.value=!1,M.value=!1,u();}function P(){F(),v.stop(),v=effectScope();}return reactive({...D,$pending:a,$valid:E,$metadata:C,$haveAsync:O,$validating:M,$validate:k,$unwatch:P,$watch:u,$reset:_})}function Te({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:R,options:y,externalErrors:d,onUnwatch:S,$isArray:v,initialState:D,shortcuts:F}){let O=effectScope(),a,E=[],C,M,u,i,c=()=>{};function j(){let g=r.value,A=R.checkRuleDeclEntry(n,g);I.value=Object.fromEntries(Object.entries(g).filter(([h])=>h.startsWith("$"))),P(),m.value=Object.fromEntries(Object.entries(r.value).filter(([h])=>!h.startsWith("$")).map(([h,p])=>{if(p){let N=toRef(()=>p);return [h,ct({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:t,rule:N,ruleKey:h,state:e,path:n,storage:R,$debounce:I.value.$debounce})]}return []}).filter(h=>!!h.length)),a.processShortcuts(),k(),A?.valid!=null&&(a.$dirty.value=R.getDirtyState(n),a.$dirty.value&&c()),R.addRuleDeclEntry(n,g);}function k(){c=a.$debounce.value?$e(W,a.$debounce.value??a.$haveAnyAsyncRule?100:0):W;}function _(){m.value&&Object.entries(m.value).forEach(([g,A])=>{A.$unwatch();}),u(),a.$dirty.value&&R.setDirtyEntry(n,a.$dirty.value),C?.(),M?.(),O.stop(),O=effectScope(),E.forEach(g=>g.stop()),E=[],S?.(),i?.();}function P(){m.value&&Object.entries(m.value).forEach(([g,A])=>{A.$watch();}),a=O.run(()=>{let g=ref(!1),A=ref(!1),h=computed(()=>g.value),p=computed(()=>I.value.$debounce),N=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(y.lazy)),X=computed(()=>Ue.value===!0?!1:I.value.$rewardEarly!=null?I.value.$rewardEarly:unref(y.rewardEarly)),ye=computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:unref(y.clearExternalErrorsOnChange)),Ue=computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:unref(y.autoDirty)),Be=computed(()=>Object.entries(m.value).some(([q,te])=>te.$validating)),Le=computed({get:()=>e.value,set(q){C(),e.value=q,b();}}),xe=computed(()=>ve.value&&!ge.value&&g.value),He=computed(()=>xe.value?Ae({field:{$dirty:g.value,$externalErrors:d?.value,$rules:m.value}}):[]),qe=computed(()=>it({field:{$rules:m.value}})),ze=computed(()=>Ae({field:{$dirty:g.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),Je=computed(()=>!(ve.value||ge.value)),ge=computed(()=>A.value||!X.value?Object.entries(m.value).some(([q,te])=>te.$pending):!1),ve=computed(()=>d?.value?.length?!0:z(m.value)?!1:!X.value||X.value&&A.value?Object.entries(m.value).some(([q,te])=>!te.$valid):!1),Ye=computed(()=>l),De=computed(()=>d?.value?.length||z(m.value)?!1:g.value&&!z(e.value)&&!Be.value?Object.values(m.value).every(q=>q.$valid&&q.$active):!1),St=computed(()=>Object.entries(m.value).some(([q,te])=>te.$haveAsync));function ht(){F?.fields&&Object.entries(F.fields).forEach(([q,te])=>{let Xe=effectScope();Qe[q]=Xe.run(()=>{let Ze=ref();return watchEffect(()=>{Ze.value=te(reactive({$dirty:g,$externalErrors:d?.value??[],$value:e,$silentValue:Le,$rules:m,$error:xe,$pending:ge,$invalid:ve,$valid:De,$errors:He,$ready:Je,$silentErrors:ze,$anyDirty:h,$tooltips:qe,$name:Ye}));}),Ze}),E.push(Xe);});}let Qe={};return watch(De,q=>{q&&(A.value=!1);}),{$error:xe,$pending:ge,$invalid:ve,$valid:De,$debounce:p,$lazy:N,$errors:He,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:Ue,$clearExternalErrorsOnChange:ye,$anyDirty:h,$name:Ye,$haveAnyAsyncRule:St,$shortcuts:Qe,$validating:Be,$tooltips:qe,$dirty:g,triggerPunishment:A,processShortcuts:ht,$silentValue:Le}}),b(),u=watch(a.$dirty,()=>{R.setDirtyEntry(n,a.$dirty.value);}),M=watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=!1);}),i=watch(a.$haveAnyAsyncRule,k);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),r.value instanceof Function&&j(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&o();},{deep:v?!0:Se?1:!0});}function W(){Object.values(m.value).forEach(g=>{g.$validate();});}let m=ref({}),I=ref({});j();function V(){o(),a.$dirty.value=!1,R.setDirtyEntry(n,!1),Object.entries(m.value).forEach(([g,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(m.value).forEach(g=>g.$validate());}function Q(g=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c():g&&c();}async function K(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return z(m.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(m.value).map(([p,N])=>N.$validate()))).every(p=>p.status==="fulfilled"?p.value===!0:!1),data:g}}catch{return {result:!1,data:e.value}}}function x(){_(),e.value=H(D),V();}function w(g=!0){return a.$dirty.value?e.value:g?{_null:!0}:null}function o(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&c();let{$shortcuts:s,$validating:$,$autoDirty:f,$rewardEarly:T,$clearExternalErrorsOnChange:U,$haveAnyAsyncRule:Y,$debounce:ee,$lazy:ae,...le}=a;return reactive({...le,$externalErrors:d,$value:e,$rules:m,...s,$reset:V,$touch:Q,$validate:K,$unwatch:_,$watch:P,$resetAll:x,$extractDirtyFields:w,$clearExternalErrors:o})}function je({$id:e,path:r,index:t,options:n,storage:l,stateValue:R,customMessages:y,rules:d,externalErrors:S,initialState:v,shortcuts:D,fieldName:F}){let O=d.$key?d.$key:he(),a=`${r}.${String(O)}`;typeof R.value=="object"&&R.value!=null&&(R.value.$id?a=`${r}.${R.value.$id}`:Object.defineProperties(R.value,{$id:{value:O,enumerable:!1,configurable:!1,writable:!1}}));let E=me({state:R,rulesDef:toRef(()=>d),customMessages:y,path:a,storage:l,options:n,externalErrors:toRef(S?.value??[],t),initialState:v?.[t],shortcuts:D,fieldName:F});if(E){let C=R.value?.$id;E.$id=C??String(O),l.addArrayStatus(e,E.$id,E);}return E}function dt({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:y,initialState:d,shortcuts:S,fieldName:v}){let D=effectScope(),F,O=effectScope(),a,E=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let C=ref(),M=ref(e.value),u,i=ref({}),c=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(s=>typeof s!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(s=>fe(s)):!1)})),j(),P();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=he(),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&&(M.value=i.value.$value,Array.isArray(e.value)?c.value=e.value.map((o,s)=>{let{scope:$,unwrapped:f}=Oe(r.value.$each,toRef(()=>o),s);$&&E.push($);let T=je({$id:C.value,path:n,customMessages:t,rules:f??{},stateValue:toRef(()=>o),index:s,options:R,storage:l,externalErrors:toRef(y?.value??{},"$each"),initialState:d?.[s],shortcuts:S,fieldName:v});return T||null}).filter(o=>!!o):c.value=[],i.value=Te({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:toRef(y?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:S,fieldName:v}));}function k(){if(Array.isArray(e.value)){let o=H(c.value);c.value=e.value.map((s,$)=>{let f=toRef(()=>s);if(s.$id&&c.value.find(T=>T.$id===s.$id)){let T=l.getArrayStatus(C.value,s.$id);return T?(T.$value=f,T):null}else {let{scope:T,unwrapped:U}=Oe(r.value.$each,f,$);if(T&&E.push(T),U){let Y=je({$id:C.value,path:n,customMessages:t,rules:U,stateValue:f,index:$,options:R,storage:l,externalErrors:toRef(y?.value??{},"$each"),initialState:d?.[$],shortcuts:S,fieldName:v});return Y||null}}}).filter(s=>!!s),o.filter(s=>!e.value.find($=>s.$id===$.$id)).forEach((s,$)=>{l.deleteArrayStatus(C.value,$.toString());});}else c.value=[];}function _(){u=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():k();},{deep:Se?1:!0,flush:"pre"});}function P(){_(),D=effectScope(),F=D.run(()=>{let o=computed({get:()=>e.value,set(p){u(),e.value=p,_();}}),s=computed(()=>i.value.$dirty&&c.value.every(p=>p.$dirty)),$=computed(()=>i.value.$anyDirty||c.value.some(p=>p.$dirty)),f=computed(()=>i.value.$invalid||c.value.some(p=>p.$invalid)),T=computed(()=>(z(i.value.$rules)?!0:i.value.$valid)&&c.value.every(p=>p.$valid)),U=computed(()=>i.value.$error||c.value.some(p=>p.$error)),Y=computed(()=>!(f.value||ee.value)),ee=computed(()=>i.value.$pending||c.value.some(p=>p.$pending)),ae=computed(()=>({$self:i.value.$errors,$each:c.value.map(p=>p.$errors)})),le=computed(()=>({$self:i.value.$silentErrors,$each:c.value.map(p=>p.$silentErrors)})),g=computed(()=>v);function A(){S?.collections&&Object.entries(S?.collections).forEach(([p,N])=>{let X=effectScope();h[p]=X.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=N(reactive({$dirty:s,$error:U,$silentValue:o,$pending:ee,$invalid:f,$valid:T,$errors:ae,$ready:Y,$silentErrors:le,$anyDirty:$,$name:g,$each:c,$field:i,$value:e}));}),ye}),E.push(X);});}let h={};return A(),{$dirty:s,$anyDirty:$,$invalid:f,$valid:T,$error:U,$pending:ee,$errors:ae,$silentErrors:le,$ready:Y,$name:g,$shortcuts:h,$silentValue:o}}),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`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),c.value&&c.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),D.stop(),D=effectScope(),O.stop(),O=effectScope(!0),E.forEach(o=>o.stop()),E=[];}function W(o=!0,s=!1){i.value.$touch(o,s),c.value.forEach($=>{$.$touch(o,s);});}function m(){i.value.$reset(),c.value.forEach(o=>{o.$reset();});}async function I(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...c.value.map(f=>f.$validate())])).every(f=>f.status==="fulfilled"?f.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function V(){i.value.$clearExternalErrors(),c.value.forEach(o=>{o.$clearExternalErrors();});}function Q(o=!0){let s=c.value.map($=>{if(st($))return $.$extractDirtyFields(o)});return o&&s.every($=>z($))&&(s=[]),s}function K(){b(),e.value=H(d),m();}let{$shortcuts:x,...w}=F;return reactive({$field:i,...w,...x,$each:c,$value:e,$validate:I,$unwatch:b,$watch:P,$touch:W,$reset:m,$resetAll:K,$extractDirtyFields:Q,$clearExternalErrors:V})}function Ge({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:R,initialState:y,fieldName:d,...S}){let v=effectScope(),D,F=[],O=null,a=null,E=null;async function M(x=!0){let w=Object.entries(e.value),o=Object.fromEntries(w.filter(([f,T])=>!!T).map(([f,T])=>{if(T){let U=toRef(r.value,f),Y=toRef(()=>T),ee=toRef(l?.value??{},f);return [f,me({state:U,rulesDef:Y,path:t?`${t}.${f}`:f,externalErrors:ee,initialState:y?.[f],fieldName:f,...S})]}return []})),s=Object.fromEntries(Object.entries(unref(l)??{}).filter(([f,T])=>!(f in e.value)&&!!T).map(([f])=>{let T=toRef(r.value,f);return [f,me({state:T,rulesDef:computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]})),$=Object.fromEntries(Object.entries(r.value).filter(([f])=>!(f in e.value)&&!(f in(s.value??{}))).map(([f])=>{let T=toRef(r.value,f);return [f,me({state:T,rulesDef:computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]}));u.value={...o,...s,...$},x&&_();}let u=S.storage.getFieldsEntry(t);M();function i(){a?.(),Object.values(u.value).forEach(x=>{x.$reset();}),j();}function c(x=!0,w=!1){Object.values(u.value).forEach(o=>{o.$touch(x,w);});}function j(){l?.value&&(a=watch(l,()=>{P(),M();},{deep:!0}));}function k(){E=watch(r,()=>{P(),M(),c(!0,!0);},{flush:"sync"});}function _(){n&&(O?.(),O=watch(n,()=>{P(),M();},{deep:!0,flush:"post"}),j()),k(),v=effectScope(),D=v.run(()=>{let x=computed({get:()=>r.value,set(h){P(),r.value=h,M();}}),w=computed({get:()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([h,p])=>p?.$dirty),set(){}}),o=computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$dirty),set(){}}),s=computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$invalid),set(){}}),$=computed({get:()=>Object.entries(u.value).every(([h,p])=>p?.$valid),set(){}}),f=computed({get:()=>o.value&&!U.value&&s.value,set(){}}),T=computed({get:()=>unref(S.options.autoDirty)?o.value&&!(s.value||U.value):!(s.value||U.value),set(){}}),U=computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$pending),set(){}}),Y=computed({get:()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$errors])),set(){}}),ee=computed({get:()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$silentErrors])),set(){}}),ae=computed({get:()=>d,set(){}});function le(){S.shortcuts?.nested&&Object.entries(S.shortcuts.nested).forEach(([h,p])=>{let N=effectScope();A[h]=N.run(()=>{let X=ref();return watchEffect(()=>{X.value=p(reactive({$dirty:w,$value:r,$silentValue:x,$error:f,$pending:U,$invalid:s,$valid:$,$ready:T,$anyDirty:o,$name:ae,$silentErrors:ee,$errors:Y,$fields:u}));}),X}),F.push(N);});}let g=computed({get:()=>R?Object.fromEntries(Object.entries(R?.(u.value)??{}).map(([h,p])=>p.length?[h,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(N=>[N,et(p,N)])),...Object.fromEntries(["$errors","$silentErrors"].map(N=>[N,tt(p,N)]))}]:[])):{},set(){}}),A={};return le(),{$dirty:w,$anyDirty:o,$invalid:s,$valid:$,$error:f,$pending:U,$errors:Y,$silentErrors:ee,$ready:T,$name:ae,$shortcuts:A,$groups:g,$silentValue:x}});}function P(){O?.(),a?.(),E?.(),F.forEach(x=>x.stop()),F=[],v.stop(),u.value&&Object.entries(u.value).forEach(([x,w])=>{w.$unwatch();});}function b(){Object.entries(u.value).forEach(([x,w])=>{w.$clearExternalErrors();});}async function W(){P(),r.value=H({...y??{}}),i(),M();}function m(x){return x.filter(([w,o])=>Z(o)?!(o&&typeof o=="object"&&"_null"in o)&&!z(o):Array.isArray(o)?o.length:!0)}function I(x=!0){let w=Object.entries(u.value).map(([o,s])=>[o,s.$extractDirtyFields(x)]);return x&&(w=m(w)),Object.fromEntries(w)}async function V(){try{let x=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:x}}catch{return {result:!1,data:r.value}}}let{$shortcuts:Q,...K}=D;return reactive({...K,...Q,$fields:u,$value:r,$resetAll:W,$reset:i,$touch:c,$validate:V,$unwatch:P,$watch:_,$clearExternalErrors:b,$extractDirtyFields:I})}function me({rulesDef:e,externalErrors:r,...t}){return ot(e,t.state)?dt({rulesDef:e,externalErrors:r,...t}):lt(t.state,e)&&at(t.state)?Ge({rulesDef:e,externalErrors:r,...t}):ut(e)?Te({rulesDef:e,externalErrors:r,...t}):null}function ce({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:R}){let y=we(),d=ref();return d.value=Ge({rootRules:t,rulesDef:t,state:n,customMessages:l?.(),storage:y,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:R,fieldName:"root",path:""}),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function Ne(e,r,t){let n={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function l(R,y,d){let S=isRef(y)?y:computed(typeof y=="function"?y:()=>y),v={...n,...d},D=isRef(R)?R:ref(R),F={...H(D.value)};return {r$:ce({scopeRules:S,state:D,options:v,initialState:F,customRules:e,shortcuts:t}).regle}}return l}var vt=Ne();function ke(){function e(r,t){return t}return e}var We=ke();function $t({rules:e,modifiers:r,shortcuts:t}){let n=Ne(e,r,t),l=ke();return {useRegle:n,inferRules:l}}
|
|
2
|
-
export{Ce as InternalRuleType,Pe as createRule
|
|
1
|
+
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,shallowRef,effectScope,computed,isRef,toRef,unref,watch,watchEffect}from'vue';function z(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 Ke=Symbol("regle-rule");function bt(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function H(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>H(n)))),t=="Map"&&(r=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,bt(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=H(e[n]);}return r}var Ce=(t=>(t.Inline="__inline",t.Async="__async",t))(Ce||{});function et(e,r){return e.some(t=>t[r])}function tt(e,r){return e.reduce((t,n)=>{let l=n[r]||[];return t.concat(l)},[])}function B(e){try{return e.map(r=>toValue(r))}catch{return []}}function rt(e){return e.map(r=>r instanceof Function?computed(r):isRef(r)?r:toRef(()=>r))}function nt(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(y=>y.trim()).filter(y=>y.length>0).length:0}function Ie(e,...r){let{validator:t,type:n}=e,l=n==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(d,...S){return e.validator(d,...B(S.length?S:r))},message(d){return typeof e.message=="function"?e.message({...d,$params:B(d?.$params?.length?d.$params:r)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:B(d?.$params?.length?d.$params:r)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:B(d?.$params?.length?d.$params:r)}):e.tooltip??[]},exec(d){let S=e.validator(d,...B(r)),$;return S instanceof Promise?S.then(D=>($=D,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=S,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:rt(r),_brand:Ke}}function Pe(e){if(typeof e.validator=="function"){let t=Ie(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(nt(e.validator)>1){let l=function(...R){return Ie(e,...R)};return l.validator=t.validator,l.message=t.message,l.active=t.active,l.tooltip=t.tooltip,l.type=t.type,l.exec=t.exec,l._validator=t.validator,l._message=t.message,l._active=t.active,l._tooltip=t.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return t}throw new Error("Validator must be a function")}function we(){let e=shallowRef(new Map),r=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),R=shallowRef(new Map);function y(u){let i=r.value.get(u);if(i)return i;{let c=ref({});return r.value.set(u,c),c}}function d(u){let i=t.value.get(u);if(i)return i;{let c=ref([]);return t.value.set(u,c),c}}function S(u,i,c){R.value.set(`${u}-${i}`,c);}function $(u,i){return R.value.get(`${u}-${i}`)}function D(u,i){u&&i!=null&&R.value.delete(`${u}-${i}`);}function F(u,i){n.value.set(u,i);}function O(u){return n.value.get(u)??!1}function a(u,i){e.value.set(u,i);}function E(u,i){let c=e.value.get(u);return c?C(i,c)?{valid:!0}:{valid:!1}:void 0}function C(u,i){let c=Object.keys(i),j=Object.keys(u);return j.length!==c.length||!j.every(_=>c.includes(_))?!1:j.every(_=>{let P=u[_],b=i[_];return !b||!P||typeof P=="function"||typeof b=="function"||typeof P=="number"||typeof P=="boolean"?!1:P._params?P._params?.every((W,m)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=B(b._params),V=B(P._params);return I?.[m]===V?.[m]}}):!0})}function M(u){let i=l.value.get(u);if(i)return i;{let c=ref(!1),j=ref(!0),k=ref({}),_=ref(!1);return l.value.set(u,{$pending:c,$valid:j,$metadata:k,$validating:_}),{$pending:c,$valid:j,$metadata:k,$validating:_}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),n.value.clear(),l.value.clear(),R.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:F,checkRuleDeclEntry:E,getDirtyState:O,trySetRuleStatusRef:M,getFieldsEntry:y,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:S,deleteArrayStatus:D,arrayStatusStorage:R}}function Z(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function at(e){return e.value instanceof Date||e.value instanceof File?!1:Z(e.value)}function Oe(e,r,t){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(r,t??0)):l=e,{scope:n,unwrapped:l}}function ge(e,r,t){let n,l=(...R)=>new Promise(y=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...R])).then(y);},r);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Ot(e,r){let t=String(e).split("."),n=String(r).split(".");for(let l=0;l<Math.min(t.length,n.length);l++){let R=Number(t[l]),y=Number(n[l]);if(R>y)return 1;if(y>R)return -1;if(!isNaN(R)&&isNaN(y))return 1;if(isNaN(R)&&!isNaN(y))return -1}return 0}var Se=Ot(version,"3.5.0")!==-1;function At(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?At():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function lt(e,r){return Z(e.value)&&Z(r.value)&&!Object.entries(r.value).some(t=>fe(t))}function ot(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function ut(e){return !!e.value&&Z(e.value)}function fe(e){return Z(e)&&"_validator"in e}function Re(e){return typeof e.value!="function"}function st(e){return Z(e)&&"$fields"in e}function Ae({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,n])=>r||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function it({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function ct({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:R,storage:y,$debounce:d,modifiers:S}){let $=effectScope(),D={},F,O=ref(!1),{$pending:a,$valid:E,$metadata:C,$validating:M}=y.trySetRuleStatusRef(`${R}.${n}`);function u(){$=effectScope(),D=$.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:E.value,$invalid:!E.value,$pending:a.value},$params:x.value,...C.value})),W=computed(()=>Re(t)?typeof t.value.active=="function"?t.value.active(b.value):!!t.value.active:!0);function m(o){let s="",g=r?r[n]?.[o]:void 0;if(g&&(typeof g=="function"?s=g(b.value):s=g),Re(t)){let f=`_${o}_patched`;g&&!t.value[f]||(typeof t.value[o]=="function"?s=t.value[o](b.value):s=t.value[o]??"");}return s}let I=computed(()=>{let o=m("message");return z(o)&&(o="This field is not valid"),o}),V=computed(()=>m("tooltip")),Q=computed(()=>Re(t)&&t.value.type?t.value.type:n),K=computed(()=>Re(t)?t.value.validator:t.value),x=computed(()=>typeof t.value=="function"?[]:B(t.value._params??[])),w=computed(()=>`${R}.${Q.value}`);return {$active:W,$message:I,$type:Q,$validator:K,$params:x,$path:w,$tooltip:V}}),F=watch(D?.$params,()=>{(S.$autoDirty.value||S.$rewardEarly.value&&e.$error.value)&&k();});}u();function i(){E.value=!0,e.$dirty.value&&(a.value=!0);}async function c(){let b=!1;try{let W=D.$validator.value,m=W(l.value,...D.$params.value),I=l.value;i();let V;if(m instanceof Promise?V=await m:V=m,l.value!==I)return !0;if(typeof V=="boolean")b=V;else {let{$valid:Q,...K}=V;b=Q,C.value=K;}}catch{b=!1;}finally{a.value=!1;}return b}let j=ge(c,d??200);async function k(){try{M.value=!0;let b=!1;if(fe(t.value)&&t.value._async)b=await j();else {let W=D.$validator.value,m=W(l.value,...D.$params.value);if(m 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(m!=null)if(typeof m=="boolean")b=m;else {let{$valid:I,...V}=m;b=I,C.value=V;}}return E.value=b,b}catch{return !1}finally{M.value=!1;}}function _(){E.value=!0,C.value={},a.value=!1,M.value=!1,u();}function P(){F(),$.stop(),$=effectScope();}return reactive({...D,$pending:a,$valid:E,$metadata:C,$haveAsync:O,$validating:M,$validate:k,$unwatch:P,$watch:u,$reset:_})}function Te({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:R,options:y,externalErrors:d,onUnwatch:S,$isArray:$,initialState:D,shortcuts:F}){let O=effectScope(),a,E=[],C,M,u,i,c=()=>{};function j(){let v=r.value,A=R.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([h])=>h.startsWith("$"))),P(),m.value=Object.fromEntries(Object.entries(r.value).filter(([h])=>!h.startsWith("$")).map(([h,p])=>{if(p){let N=toRef(()=>p);return [h,ct({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:t,rule:N,ruleKey:h,state:e,path:n,storage:R,$debounce:I.value.$debounce})]}return []}).filter(h=>!!h.length)),a.processShortcuts(),k(),A?.valid!=null&&(a.$dirty.value=R.getDirtyState(n),a.$dirty.value&&c()),R.addRuleDeclEntry(n,v);}function k(){c=a.$debounce.value?ge(W,a.$debounce.value??a.$haveAnyAsyncRule?100:0):W;}function _(){m.value&&Object.entries(m.value).forEach(([v,A])=>{A.$unwatch();}),u(),a.$dirty.value&&R.setDirtyEntry(n,a.$dirty.value),C?.(),M?.(),O.stop(),O=effectScope(),E.forEach(v=>v.stop()),E=[],S?.(),i?.();}function P(){m.value&&Object.entries(m.value).forEach(([v,A])=>{A.$watch();}),a=O.run(()=>{let v=ref(!1),A=ref(!1),h=computed(()=>v.value),p=computed(()=>I.value.$debounce),N=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(y.lazy)),X=computed(()=>Ue.value===!0?!1:I.value.$rewardEarly!=null?I.value.$rewardEarly:unref(y.rewardEarly)),ye=computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:unref(y.clearExternalErrorsOnChange)),Ue=computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:unref(y.autoDirty)),Be=computed(()=>Object.entries(m.value).some(([q,te])=>te.$validating)),Le=computed({get:()=>e.value,set(q){C(),e.value=q,b();}}),xe=computed(()=>$e.value&&!ve.value&&v.value),He=computed(()=>xe.value?Ae({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value}}):[]),qe=computed(()=>it({field:{$rules:m.value}})),ze=computed(()=>Ae({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),Je=computed(()=>!($e.value||ve.value)),ve=computed(()=>A.value||!X.value?Object.entries(m.value).some(([q,te])=>te.$pending):!1),$e=computed(()=>d?.value?.length?!0:z(m.value)?!1:!X.value||X.value&&A.value?Object.entries(m.value).some(([q,te])=>!te.$valid):!1),Ye=computed(()=>l),De=computed(()=>d?.value?.length||z(m.value)?!1:v.value&&!z(e.value)&&!Be.value?Object.values(m.value).every(q=>q.$valid&&q.$active):!1),St=computed(()=>Object.entries(m.value).some(([q,te])=>te.$haveAsync));function ht(){F?.fields&&Object.entries(F.fields).forEach(([q,te])=>{let Xe=effectScope();Qe[q]=Xe.run(()=>{let Ze=ref();return watchEffect(()=>{Ze.value=te(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:Le,$rules:m,$error:xe,$pending:ve,$invalid:$e,$valid:De,$errors:He,$ready:Je,$silentErrors:ze,$anyDirty:h,$tooltips:qe,$name:Ye}));}),Ze}),E.push(Xe);});}let Qe={};return watch(De,q=>{q&&(A.value=!1);}),{$error:xe,$pending:ve,$invalid:$e,$valid:De,$debounce:p,$lazy:N,$errors:He,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:Ue,$clearExternalErrorsOnChange:ye,$anyDirty:h,$name:Ye,$haveAnyAsyncRule:St,$shortcuts:Qe,$validating:Be,$tooltips:qe,$dirty:v,triggerPunishment:A,processShortcuts:ht,$silentValue:Le}}),b(),u=watch(a.$dirty,()=>{R.setDirtyEntry(n,a.$dirty.value);}),M=watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),i=watch(a.$haveAnyAsyncRule,k);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),r.value instanceof Function&&j(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&o();},{deep:$?!0:Se?1:!0});}function W(){Object.values(m.value).forEach(v=>{v.$validate();});}let m=ref({}),I=ref({});j();function V(){o(),a.$dirty.value=!1,R.setDirtyEntry(n,!1),Object.entries(m.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(m.value).forEach(v=>v.$validate());}function Q(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&c():v&&c();}async function K(){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 z(m.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(m.value).map(([p,N])=>N.$validate()))).every(p=>p.status==="fulfilled"?p.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function x(){_(),e.value=H(D),V();}function w(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function o(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&c();let{$shortcuts:s,$validating:g,$autoDirty:f,$rewardEarly:T,$clearExternalErrorsOnChange:U,$haveAnyAsyncRule:Y,$debounce:ee,$lazy:ae,...le}=a;return reactive({...le,$externalErrors:d,$value:e,$rules:m,...s,$reset:V,$touch:Q,$validate:K,$unwatch:_,$watch:P,$resetAll:x,$extractDirtyFields:w,$clearExternalErrors:o})}function je({$id:e,path:r,index:t,options:n,storage:l,stateValue:R,customMessages:y,rules:d,externalErrors:S,initialState:$,shortcuts:D,fieldName:F}){let O=d.$key?d.$key:he(),a=`${r}.${String(O)}`;typeof R.value=="object"&&R.value!=null&&(R.value.$id?a=`${r}.${R.value.$id}`:Object.defineProperties(R.value,{$id:{value:O,enumerable:!1,configurable:!1,writable:!1}}));let E=me({state:R,rulesDef:toRef(()=>d),customMessages:y,path:a,storage:l,options:n,externalErrors:toRef(S?.value??[],t),initialState:$?.[t],shortcuts:D,fieldName:F});if(E){let C=R.value?.$id;E.$id=C??String(O),l.addArrayStatus(e,E.$id,E);}return E}function dt({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:y,initialState:d,shortcuts:S,fieldName:$}){let D=effectScope(),F,O=effectScope(),a,E=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let C=ref(),M=ref(e.value),u,i=ref({}),c=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(s=>typeof s!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(s=>fe(s)):!1)})),j(),P();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=he(),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&&(M.value=i.value.$value,Array.isArray(e.value)?c.value=e.value.map((o,s)=>{let{scope:g,unwrapped:f}=Oe(r.value.$each,toRef(()=>o),s);g&&E.push(g);let T=je({$id:C.value,path:n,customMessages:t,rules:f??{},stateValue:toRef(()=>o),index:s,options:R,storage:l,externalErrors:toRef(y?.value??{},"$each"),initialState:d?.[s],shortcuts:S,fieldName:$});return T||null}).filter(o=>!!o):c.value=[],i.value=Te({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:toRef(y?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:S,fieldName:$}));}function k(){if(Array.isArray(e.value)){let o=H(c.value);c.value=e.value.map((s,g)=>{let f=toRef(()=>s);if(s.$id&&c.value.find(T=>T.$id===s.$id)){let T=l.getArrayStatus(C.value,s.$id);return T?(T.$value=f,T):null}else {let{scope:T,unwrapped:U}=Oe(r.value.$each,f,g);if(T&&E.push(T),U){let Y=je({$id:C.value,path:n,customMessages:t,rules:U,stateValue:f,index:g,options:R,storage:l,externalErrors:toRef(y?.value??{},"$each"),initialState:d?.[g],shortcuts:S,fieldName:$});return Y||null}}}).filter(s=>!!s),o.filter(s=>!e.value.find(g=>s.$id===g.$id)).forEach((s,g)=>{l.deleteArrayStatus(C.value,g.toString());});}else c.value=[];}function _(){u=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():k();},{deep:Se?1:!0,flush:"pre"});}function P(){_(),D=effectScope(),F=D.run(()=>{let o=computed({get:()=>e.value,set(p){u(),e.value=p,_();}}),s=computed(()=>i.value.$dirty&&c.value.every(p=>p.$dirty)),g=computed(()=>i.value.$anyDirty||c.value.some(p=>p.$dirty)),f=computed(()=>i.value.$invalid||c.value.some(p=>p.$invalid)),T=computed(()=>(z(i.value.$rules)?!0:i.value.$valid)&&c.value.every(p=>p.$valid)),U=computed(()=>i.value.$error||c.value.some(p=>p.$error)),Y=computed(()=>!(f.value||ee.value)),ee=computed(()=>i.value.$pending||c.value.some(p=>p.$pending)),ae=computed(()=>({$self:i.value.$errors,$each:c.value.map(p=>p.$errors)})),le=computed(()=>({$self:i.value.$silentErrors,$each:c.value.map(p=>p.$silentErrors)})),v=computed(()=>$);function A(){S?.collections&&Object.entries(S?.collections).forEach(([p,N])=>{let X=effectScope();h[p]=X.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=N(reactive({$dirty:s,$error:U,$silentValue:o,$pending:ee,$invalid:f,$valid:T,$errors:ae,$ready:Y,$silentErrors:le,$anyDirty:g,$name:v,$each:c,$field:i,$value:e}));}),ye}),E.push(X);});}let h={};return A(),{$dirty:s,$anyDirty:g,$invalid:f,$valid:T,$error:U,$pending:ee,$errors:ae,$silentErrors:le,$ready:Y,$name:v,$shortcuts:h,$silentValue:o}}),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`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),c.value&&c.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),D.stop(),D=effectScope(),O.stop(),O=effectScope(!0),E.forEach(o=>o.stop()),E=[];}function W(o=!0,s=!1){i.value.$touch(o,s),c.value.forEach(g=>{g.$touch(o,s);});}function m(){i.value.$reset(),c.value.forEach(o=>{o.$reset();});}async function I(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...c.value.map(f=>f.$validate())])).every(f=>f.status==="fulfilled"?f.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function V(){i.value.$clearExternalErrors(),c.value.forEach(o=>{o.$clearExternalErrors();});}function Q(o=!0){let s=c.value.map(g=>{if(st(g))return g.$extractDirtyFields(o)});return o&&s.every(g=>z(g))&&(s=[]),s}function K(){b(),e.value=H(d),m();}let{$shortcuts:x,...w}=F;return reactive({$field:i,...w,...x,$each:c,$value:e,$validate:I,$unwatch:b,$watch:P,$touch:W,$reset:m,$resetAll:K,$extractDirtyFields:Q,$clearExternalErrors:V})}function Ge({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:R,initialState:y,fieldName:d,...S}){let $=effectScope(),D,F=[],O=null,a=null,E=null;async function M(x=!0){let w=Object.entries(e.value),o=Object.fromEntries(w.filter(([f,T])=>!!T).map(([f,T])=>{if(T){let U=toRef(r.value,f),Y=toRef(()=>T),ee=toRef(l?.value??{},f);return [f,me({state:U,rulesDef:Y,path:t?`${t}.${f}`:f,externalErrors:ee,initialState:y?.[f],fieldName:f,...S})]}return []})),s=Object.fromEntries(Object.entries(unref(l)??{}).filter(([f,T])=>!(f in e.value)&&!!T).map(([f])=>{let T=toRef(r.value,f);return [f,me({state:T,rulesDef:computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]})),g=Object.fromEntries(Object.entries(r.value).filter(([f])=>!(f in e.value)&&!(f in(s.value??{}))).map(([f])=>{let T=toRef(r.value,f);return [f,me({state:T,rulesDef:computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]}));u.value={...o,...s,...g},x&&_();}let u=S.storage.getFieldsEntry(t);M();function i(){a?.(),Object.values(u.value).forEach(x=>{x.$reset();}),j();}function c(x=!0,w=!1){Object.values(u.value).forEach(o=>{o.$touch(x,w);});}function j(){l?.value&&(a=watch(l,()=>{P(),M();},{deep:!0}));}function k(){E=watch(r,()=>{P(),M(),c(!0,!0);},{flush:"sync"});}function _(){n&&(O?.(),O=watch(n,()=>{P(),M();},{deep:!0,flush:"post"}),j()),k(),$=effectScope(),D=$.run(()=>{let x=computed({get:()=>r.value,set(h){P(),r.value=h,M();}}),w=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([h,p])=>p?.$dirty)),o=computed(()=>Object.entries(u.value).some(([h,p])=>p?.$dirty)),s=computed(()=>Object.entries(u.value).some(([h,p])=>p?.$invalid)),g=computed(()=>Object.entries(u.value).every(([h,p])=>p?.$valid)),f=computed(()=>o.value&&!U.value&&s.value),T=computed(()=>unref(S.options.autoDirty)?o.value&&!(s.value||U.value):!(s.value||U.value)),U=computed(()=>Object.entries(u.value).some(([h,p])=>p?.$pending)),Y=computed(()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$errors]))),ee=computed(()=>Object.fromEntries(Object.entries(u.value).map(([h,p])=>[h,p?.$silentErrors]))),ae=computed(()=>d);function le(){S.shortcuts?.nested&&Object.entries(S.shortcuts.nested).forEach(([h,p])=>{let N=effectScope();A[h]=N.run(()=>{let X=ref();return watchEffect(()=>{X.value=p(reactive({$dirty:w,$value:r,$silentValue:x,$error:f,$pending:U,$invalid:s,$valid:g,$ready:T,$anyDirty:o,$name:ae,$silentErrors:ee,$errors:Y,$fields:u}));}),X}),F.push(N);});}let v=computed({get:()=>R?Object.fromEntries(Object.entries(R?.(u.value)??{}).map(([h,p])=>p.length?[h,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(N=>[N,et(p,N)])),...Object.fromEntries(["$errors","$silentErrors"].map(N=>[N,tt(p,N)]))}]:[])):{},set(){}}),A={};return le(),{$dirty:w,$anyDirty:o,$invalid:s,$valid:g,$error:f,$pending:U,$errors:Y,$silentErrors:ee,$ready:T,$name:ae,$shortcuts:A,$groups:v,$silentValue:x}});}function P(){O?.(),a?.(),E?.(),F.forEach(x=>x.stop()),F=[],$.stop(),u.value&&Object.entries(u.value).forEach(([x,w])=>{w.$unwatch();});}function b(){Object.entries(u.value).forEach(([x,w])=>{w.$clearExternalErrors();});}async function W(){P(),r.value=H({...y??{}}),i(),M();}function m(x){return x.filter(([w,o])=>Z(o)?!(o&&typeof o=="object"&&"_null"in o)&&!z(o):Array.isArray(o)?o.length:!0)}function I(x=!0){let w=Object.entries(u.value).map(([o,s])=>[o,s.$extractDirtyFields(x)]);return x&&(w=m(w)),Object.fromEntries(w)}async function V(){try{let x=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:x}}catch{return {result:!1,data:r.value}}}let{$shortcuts:Q,...K}=D;return reactive({...K,...Q,$fields:u,$value:r,$resetAll:W,$reset:i,$touch:c,$validate:V,$unwatch:P,$watch:_,$clearExternalErrors:b,$extractDirtyFields:I})}function me({rulesDef:e,externalErrors:r,...t}){return ot(e,t.state)?dt({rulesDef:e,externalErrors:r,...t}):lt(t.state,e)&&at(t.state)?Ge({rulesDef:e,externalErrors:r,...t}):ut(e)?Te({rulesDef:e,externalErrors:r,...t}):null}function ce({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:R}){let y=we(),d=ref();return d.value=Ge({rootRules:t,rulesDef:t,state:n,customMessages:l?.(),storage:y,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:R,fieldName:"root",path:""}),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function Ne(e,r,t){let n={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function l(R,y,d){let S=isRef(y)?y:computed(typeof y=="function"?y:()=>y),$={...n,...d},D=isRef(R)?R:ref(R),F={...H(D.value)};return {r$:ce({scopeRules:S,state:D,options:$,initialState:F,customRules:e,shortcuts:t}).regle}}return l}var $t=Ne();function ke(){function e(r,t){return t}return e}var We=ke();function gt({rules:e,modifiers:r,shortcuts:t}){let n=Ne(e,r,t),l=ke();return {useRegle:n,inferRules:l}}
|
|
2
|
+
export{Ce as InternalRuleType,Pe as createRule,gt as defineRegleConfig,We as inferRules,B as unwrapRuleParameters,$t as useRegle,ce as useRootStorage};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -1667,95 +1667,53 @@ function createReactiveNestedStatus({
|
|
|
1667
1667
|
createReactiveFieldsStatus();
|
|
1668
1668
|
}
|
|
1669
1669
|
});
|
|
1670
|
-
const $dirty = computed({
|
|
1671
|
-
|
|
1672
|
-
return
|
|
1673
|
-
|
|
1674
|
-
});
|
|
1675
|
-
},
|
|
1676
|
-
set() {
|
|
1677
|
-
}
|
|
1678
|
-
});
|
|
1679
|
-
const $anyDirty = computed({
|
|
1680
|
-
get: () => {
|
|
1681
|
-
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1682
|
-
return statusOrField?.$dirty;
|
|
1683
|
-
});
|
|
1684
|
-
},
|
|
1685
|
-
set() {
|
|
1686
|
-
}
|
|
1687
|
-
});
|
|
1688
|
-
const $invalid = computed({
|
|
1689
|
-
get: () => {
|
|
1690
|
-
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1691
|
-
return statusOrField?.$invalid;
|
|
1692
|
-
});
|
|
1693
|
-
},
|
|
1694
|
-
set() {
|
|
1695
|
-
}
|
|
1670
|
+
const $dirty = computed(() => {
|
|
1671
|
+
return !!Object.entries($fields.value).length && Object.entries($fields.value).every(([key, statusOrField]) => {
|
|
1672
|
+
return statusOrField?.$dirty;
|
|
1673
|
+
});
|
|
1696
1674
|
});
|
|
1697
|
-
const $
|
|
1698
|
-
|
|
1699
|
-
return
|
|
1700
|
-
|
|
1701
|
-
});
|
|
1702
|
-
},
|
|
1703
|
-
set() {
|
|
1704
|
-
}
|
|
1675
|
+
const $anyDirty = computed(() => {
|
|
1676
|
+
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1677
|
+
return statusOrField?.$dirty;
|
|
1678
|
+
});
|
|
1705
1679
|
});
|
|
1706
|
-
const $
|
|
1707
|
-
|
|
1708
|
-
return
|
|
1709
|
-
}
|
|
1710
|
-
set() {
|
|
1711
|
-
}
|
|
1680
|
+
const $invalid = computed(() => {
|
|
1681
|
+
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1682
|
+
return statusOrField?.$invalid;
|
|
1683
|
+
});
|
|
1712
1684
|
});
|
|
1713
|
-
const $
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
}
|
|
1718
|
-
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
1719
|
-
},
|
|
1720
|
-
set() {
|
|
1721
|
-
}
|
|
1685
|
+
const $valid = computed(() => {
|
|
1686
|
+
return Object.entries($fields.value).every(([key, statusOrField]) => {
|
|
1687
|
+
return statusOrField?.$valid;
|
|
1688
|
+
});
|
|
1722
1689
|
});
|
|
1723
|
-
const $
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
});
|
|
1728
|
-
},
|
|
1729
|
-
set() {
|
|
1690
|
+
const $error = computed(() => $anyDirty.value && !$pending.value && $invalid.value);
|
|
1691
|
+
const $ready = computed(() => {
|
|
1692
|
+
if (!unref(commonArgs.options.autoDirty)) {
|
|
1693
|
+
return !($invalid.value || $pending.value);
|
|
1730
1694
|
}
|
|
1695
|
+
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
1731
1696
|
});
|
|
1732
|
-
const $
|
|
1733
|
-
|
|
1734
|
-
return
|
|
1735
|
-
|
|
1736
|
-
return [key, statusOrField?.$errors];
|
|
1737
|
-
})
|
|
1738
|
-
);
|
|
1739
|
-
},
|
|
1740
|
-
set() {
|
|
1741
|
-
}
|
|
1697
|
+
const $pending = computed(() => {
|
|
1698
|
+
return Object.entries($fields.value).some(([key, statusOrField]) => {
|
|
1699
|
+
return statusOrField?.$pending;
|
|
1700
|
+
});
|
|
1742
1701
|
});
|
|
1743
|
-
const $
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
);
|
|
1750
|
-
},
|
|
1751
|
-
set() {
|
|
1752
|
-
}
|
|
1702
|
+
const $errors = computed(() => {
|
|
1703
|
+
return Object.fromEntries(
|
|
1704
|
+
Object.entries($fields.value).map(([key, statusOrField]) => {
|
|
1705
|
+
return [key, statusOrField?.$errors];
|
|
1706
|
+
})
|
|
1707
|
+
);
|
|
1753
1708
|
});
|
|
1754
|
-
const $
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1709
|
+
const $silentErrors = computed(() => {
|
|
1710
|
+
return Object.fromEntries(
|
|
1711
|
+
Object.entries($fields.value).map(([key, statusOrField]) => {
|
|
1712
|
+
return [key, statusOrField?.$silentErrors];
|
|
1713
|
+
})
|
|
1714
|
+
);
|
|
1758
1715
|
});
|
|
1716
|
+
const $name = computed(() => fieldName);
|
|
1759
1717
|
function processShortcuts() {
|
|
1760
1718
|
if (commonArgs.shortcuts?.nested) {
|
|
1761
1719
|
Object.entries(commonArgs.shortcuts.nested).forEach(([key, value]) => {
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "0.5.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.5.8",
|
|
4
|
+
"description": "Type safe form validation library for Vue 3",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"vue": "^3.3.0"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"@total-typescript/ts-reset": "0.6.1",
|
|
10
10
|
"@types/node": "22.10.2",
|
|
11
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
12
|
-
"@typescript-eslint/parser": "8.
|
|
11
|
+
"@typescript-eslint/eslint-plugin": "8.19.0",
|
|
12
|
+
"@typescript-eslint/parser": "8.19.0",
|
|
13
13
|
"@vue/test-utils": "2.4.6",
|
|
14
14
|
"bumpp": "9.9.2",
|
|
15
15
|
"changelogithub": "0.13.11",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"eslint": "9.15.0",
|
|
18
18
|
"eslint-config-prettier": "9.1.0",
|
|
19
19
|
"eslint-plugin-vue": "9.31.0",
|
|
20
|
+
"expect-type": "1.1.0",
|
|
20
21
|
"prettier": "3.3.3",
|
|
21
22
|
"tsup": "8.3.5",
|
|
22
|
-
"type-fest": "4.
|
|
23
|
-
"expect-type": "1.1.0",
|
|
23
|
+
"type-fest": "4.31.0",
|
|
24
24
|
"typescript": "5.6.3",
|
|
25
25
|
"vitest": "2.1.8",
|
|
26
26
|
"vue": "3.5.13",
|