@regle/core 0.4.8 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,4 +11,24 @@ It's heavily inspired by Vuelidate.
11
11
 
12
12
  # 📚 Documentation
13
13
 
14
- [![Documentation](https://raw.githubusercontent.com/victorgarciaesgi/regle/refs/heads/main/.github/images/redirectDoc.svg)](https://regle.vercel.app/)
14
+ [![Documentation](https://raw.githubusercontent.com/victorgarciaesgi/regle/refs/heads/main/.github/images/redirectDoc.svg)](https://regle.vercel.app/)
15
+
16
+ ## 📚 Documentation
17
+
18
+ [![Documentation](https://raw.githubusercontent.com/victorgarciaesgi/regle/refs/heads/main/.github/images/redirectDoc.svg)](https://regle.vercel.app/)
19
+
20
+ ## ðŸŽŪ Play with it
21
+
22
+ | Simple demo | Advanced Demo |
23
+ | ------------- | ------------- |
24
+ | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/~/github.com/victorgarciaesgi/regle-examples/tree/main/examples/simple-example?file=examples/simple-example/src/App.vue&configPath=examples/simple-example) | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/~/github.com/victorgarciaesgi/regle-examples/tree/main/examples/advanced-example?file=examples/advanced-example/src/App.vue&configPath=examples/advanced-example) |
25
+
26
+ ## 🧰 Features
27
+ - ✅ Typescript first
28
+ - ðŸĪ– 100% type inference
29
+ - 📖 Model based validation
30
+ - 🊗 Extensible
31
+ - ðŸĶļ‍♂ïļ [Zod](https://zod.dev/) support
32
+ - ðŸĪ– [Valibot](https://valibot.dev/) support
33
+ - ðŸŠķ Light(~7kb gzip) and 0 dependencies
34
+ - 🛒 Collection validation
@@ -157,9 +157,15 @@ function createRule(definition) {
157
157
  throw new Error("Validator must be a function");
158
158
  }
159
159
  function isObject(obj) {
160
+ if (obj instanceof Date || obj instanceof File) {
161
+ return false;
162
+ }
160
163
  return typeof obj === "object" && obj !== null && !Array.isArray(obj);
161
164
  }
162
165
  function isRefObject(obj) {
166
+ if (obj.value instanceof Date || obj.value instanceof File) {
167
+ return false;
168
+ }
163
169
  return isObject(obj.value);
164
170
  }
165
171
  function cloneDeep(obj) {
@@ -792,6 +798,14 @@ function createReactiveFieldStatus({
792
798
  return ruleResult.$validating;
793
799
  });
794
800
  });
801
+ const $silentValue = vue.computed({
802
+ get: () => state.value,
803
+ set(value) {
804
+ $unwatchState();
805
+ state.value = value;
806
+ define$watchState();
807
+ }
808
+ });
795
809
  const $error = vue.computed(() => {
796
810
  return $invalid.value && !$pending.value && $dirty.value;
797
811
  });
@@ -877,6 +891,7 @@ function createReactiveFieldStatus({
877
891
  $dirty,
878
892
  $externalErrors: externalErrors?.value ?? [],
879
893
  $value: state,
894
+ $silentValue,
880
895
  $rules,
881
896
  $error,
882
897
  $pending,
@@ -924,9 +939,22 @@ function createReactiveFieldStatus({
924
939
  $tooltips,
925
940
  $dirty,
926
941
  triggerPunishment,
927
- processShortcuts
942
+ processShortcuts,
943
+ $silentValue
928
944
  };
929
945
  });
946
+ define$watchState();
947
+ $unwatchDirty = vue.watch(scopeState.$dirty, () => {
948
+ storage.setDirtyEntry(path, scopeState.$dirty.value);
949
+ });
950
+ $unwatchValid = vue.watch(scopeState.$valid, (valid) => {
951
+ if (scopeState.$rewardEarly.value && valid) {
952
+ scopeState.triggerPunishment.value = false;
953
+ }
954
+ });
955
+ $unwatchAsync = vue.watch(scopeState.$haveAnyAsyncRule, define$commit);
956
+ }
957
+ function define$watchState() {
930
958
  $unwatchState = vue.watch(
931
959
  state,
932
960
  () => {
@@ -947,15 +975,6 @@ function createReactiveFieldStatus({
947
975
  },
948
976
  { deep: $isArray ? true : isVueSuperiorOrEqualTo3dotFive ? 1 : true }
949
977
  );
950
- $unwatchDirty = vue.watch(scopeState.$dirty, () => {
951
- storage.setDirtyEntry(path, scopeState.$dirty.value);
952
- });
953
- $unwatchValid = vue.watch(scopeState.$valid, (valid) => {
954
- if (scopeState.$rewardEarly.value && valid) {
955
- scopeState.triggerPunishment.value = false;
956
- }
957
- });
958
- $unwatchAsync = vue.watch(scopeState.$haveAnyAsyncRule, define$commit);
959
978
  }
960
979
  function $commitHandler() {
961
980
  Object.values($rules.value).forEach((rule) => {
@@ -1271,7 +1290,7 @@ function createReactiveCollectionStatus({
1271
1290
  $eachStatus.value = [];
1272
1291
  }
1273
1292
  }
1274
- function $watch() {
1293
+ function define$watchState() {
1275
1294
  $unwatchState = vue.watch(
1276
1295
  state,
1277
1296
  () => {
@@ -1283,8 +1302,19 @@ function createReactiveCollectionStatus({
1283
1302
  },
1284
1303
  { deep: isVueSuperiorOrEqualTo3dotFive ? 1 : true, flush: "pre" }
1285
1304
  );
1305
+ }
1306
+ function $watch() {
1307
+ define$watchState();
1286
1308
  scope = vue.effectScope();
1287
1309
  scopeState = scope.run(() => {
1310
+ const $silentValue = vue.computed({
1311
+ get: () => state.value,
1312
+ set(value) {
1313
+ $unwatchState();
1314
+ state.value = value;
1315
+ define$watchState();
1316
+ }
1317
+ });
1288
1318
  const $dirty = vue.computed(() => {
1289
1319
  return $fieldStatus.value.$dirty && $eachStatus.value.every((statusOrField) => {
1290
1320
  return statusOrField.$dirty;
@@ -1342,6 +1372,7 @@ function createReactiveCollectionStatus({
1342
1372
  vue.reactive({
1343
1373
  $dirty,
1344
1374
  $error,
1375
+ $silentValue,
1345
1376
  $pending,
1346
1377
  $invalid,
1347
1378
  $valid,
@@ -1375,7 +1406,8 @@ function createReactiveCollectionStatus({
1375
1406
  $silentErrors,
1376
1407
  $ready,
1377
1408
  $name,
1378
- $shortcuts: $shortcuts2
1409
+ $shortcuts: $shortcuts2,
1410
+ $silentValue
1379
1411
  };
1380
1412
  });
1381
1413
  if (immediateScopeState.isPrimitiveArray.value) {
@@ -1594,8 +1626,20 @@ function createReactiveNestedStatus({
1594
1626
  );
1595
1627
  }
1596
1628
  }
1629
+ function define$watchState() {
1630
+ $unwatchState = vue.watch(
1631
+ state,
1632
+ () => {
1633
+ $unwatch();
1634
+ createReactiveFieldsStatus();
1635
+ $touch(true, true);
1636
+ },
1637
+ { flush: "sync" }
1638
+ );
1639
+ }
1597
1640
  function $watch() {
1598
1641
  if (rootRules) {
1642
+ $unwatchRules?.();
1599
1643
  $unwatchRules = vue.watch(
1600
1644
  rootRules,
1601
1645
  () => {
@@ -1606,17 +1650,17 @@ function createReactiveNestedStatus({
1606
1650
  );
1607
1651
  define$WatchExternalErrors();
1608
1652
  }
1609
- $unwatchState = vue.watch(
1610
- state,
1611
- () => {
1612
- $unwatch();
1613
- createReactiveFieldsStatus();
1614
- $touch(true, true);
1615
- },
1616
- { flush: "sync" }
1617
- );
1653
+ define$watchState();
1618
1654
  scope = vue.effectScope();
1619
1655
  scopeState = scope.run(() => {
1656
+ const $silentValue = vue.computed({
1657
+ get: () => state.value,
1658
+ set(value) {
1659
+ $unwatch();
1660
+ state.value = value;
1661
+ createReactiveFieldsStatus();
1662
+ }
1663
+ });
1620
1664
  const $dirty = vue.computed({
1621
1665
  get: () => {
1622
1666
  return !!Object.entries($fields.value).length && Object.entries($fields.value).every(([key, statusOrField]) => {
@@ -1717,6 +1761,7 @@ function createReactiveNestedStatus({
1717
1761
  vue.reactive({
1718
1762
  $dirty,
1719
1763
  $value: state,
1764
+ $silentValue,
1720
1765
  $error,
1721
1766
  $pending,
1722
1767
  $invalid,
@@ -1783,7 +1828,8 @@ function createReactiveNestedStatus({
1783
1828
  $ready,
1784
1829
  $name,
1785
1830
  $shortcuts: $shortcuts2,
1786
- $groups
1831
+ $groups,
1832
+ $silentValue
1787
1833
  };
1788
1834
  });
1789
1835
  }
@@ -331,8 +331,8 @@ type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts e
331
331
  declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutDefinition<any>>;
332
332
 
333
333
  interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
334
- <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : never>(state: MaybeRef<TState> | DeepReactiveState<TState> | undefined, rulesFactory: TRules): TRules;
335
- <TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): TRules;
334
+ <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : never>(state: MaybeRef<TState> | DeepReactiveState<TState> | undefined, rulesFactory: TRules): NoInferLegacy<TRules>;
335
+ <TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): NoInferLegacy<TRules>;
336
336
  }
337
337
  declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
338
338
 
@@ -642,6 +642,7 @@ type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl
642
642
  */
643
643
  type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any, Partial<AllRulesDeclarations>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleCommonStatus<TState>, '$value'> & {
644
644
  $value: Maybe<UnwrapNestedRefs<TState>>;
645
+ $silentValue: Maybe<UnwrapNestedRefs<TState>>;
645
646
  readonly $errors: string[];
646
647
  readonly $silentErrors: string[];
647
648
  readonly $externalErrors: string[];
@@ -668,6 +669,7 @@ interface RegleCommonStatus<TValue = any> {
668
669
  readonly $name: string;
669
670
  $id?: string;
670
671
  $value: UnwrapNestedRefs<TValue>;
672
+ $silentValue: UnwrapNestedRefs<TValue>;
671
673
  $touch(runCommit?: boolean, withConditions?: boolean): void;
672
674
  $reset(): void;
673
675
  $resetAll: () => void;
@@ -700,6 +702,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
700
702
  */
701
703
  type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePartialRuleTree<ArrayElement<TState>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleCommonStatus<TState>, '$value'> & {
702
704
  $value: Maybe<TState>;
705
+ $silentValue: Maybe<TState>;
703
706
  readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, TShortcuts>>;
704
707
  readonly $field: RegleFieldStatus<TState, TFieldRule, TShortcuts>;
705
708
  readonly $errors: RegleCollectionErrors<TState>;
@@ -331,8 +331,8 @@ type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts e
331
331
  declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutDefinition<any>>;
332
332
 
333
333
  interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
334
- <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : never>(state: MaybeRef<TState> | DeepReactiveState<TState> | undefined, rulesFactory: TRules): TRules;
335
- <TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): TRules;
334
+ <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : never>(state: MaybeRef<TState> | DeepReactiveState<TState> | undefined, rulesFactory: TRules): NoInferLegacy<TRules>;
335
+ <TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): NoInferLegacy<TRules>;
336
336
  }
337
337
  declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
338
338
 
@@ -642,6 +642,7 @@ type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl
642
642
  */
643
643
  type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any, Partial<AllRulesDeclarations>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleCommonStatus<TState>, '$value'> & {
644
644
  $value: Maybe<UnwrapNestedRefs<TState>>;
645
+ $silentValue: Maybe<UnwrapNestedRefs<TState>>;
645
646
  readonly $errors: string[];
646
647
  readonly $silentErrors: string[];
647
648
  readonly $externalErrors: string[];
@@ -668,6 +669,7 @@ interface RegleCommonStatus<TValue = any> {
668
669
  readonly $name: string;
669
670
  $id?: string;
670
671
  $value: UnwrapNestedRefs<TValue>;
672
+ $silentValue: UnwrapNestedRefs<TValue>;
671
673
  $touch(runCommit?: boolean, withConditions?: boolean): void;
672
674
  $reset(): void;
673
675
  $resetAll: () => void;
@@ -700,6 +702,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
700
702
  */
701
703
  type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePartialRuleTree<ArrayElement<TState>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleCommonStatus<TState>, '$value'> & {
702
704
  $value: Maybe<TState>;
705
+ $silentValue: Maybe<TState>;
703
706
  readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, TShortcuts>>;
704
707
  readonly $field: RegleFieldStatus<TState, TFieldRule, TShortcuts>;
705
708
  readonly $errors: RegleCollectionErrors<TState>;
@@ -1,2 +1,2 @@
1
- 'use strict';var vue=require('vue');var Ee=(t=>(t.Inline="__inline",t.Async="__async",t))(Ee||{});function Qe(e,r){return e.some(t=>t[r])}function Xe(e,r){return e.reduce((t,n)=>{let l=n[r]||[];return t.concat(l)},[])}function W(e){try{return e.map(r=>vue.toValue(r))}catch{return []}}function Ze(e){return e.map(r=>r instanceof Function?vue.computed(r):vue.isRef(r)?r:vue.toRef(()=>r))}function Ke(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(m=>m.trim()).filter(m=>m.length>0).length:0}function De(e,...r){let{validator:t,type:n}=e,l=n==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(d,...h){return e.validator(d,...W(h.length?h:r))},message(d){return typeof e.message=="function"?e.message({...d,$params:W(d?.$params?.length?d.$params:r)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:W(d?.$params?.length?d.$params:r)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:W(d?.$params?.length?d.$params:r)}):e.tooltip??[]},exec(d){let h=e.validator(d,...W(r)),$;return h instanceof Promise?h.then(C=>($=C,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=h,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:Ze(r)}}function xe(e){if(typeof e.validator=="function"){let t=De(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Ke(e.validator)>1){let l=function(...p){return De(e,...p)};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 X(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function et(e){return X(e.value)}function U(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>U(n)))),t=="Map"&&(r=new Map([...e].map(n=>[U(n[0]),U(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,Et(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=U(e[n]);}return r}function Et(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 Ce(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 ye(e,r,t){let n,l=(...p)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...p])).then(m);},r);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function xt(e,r){let t=String(e).split("."),n=String(r).split(".");for(let l=0;l<Math.min(t.length,n.length);l++){let p=Number(t[l]),m=Number(n[l]);if(p>m)return 1;if(m>p)return -1;if(!isNaN(p)&&isNaN(m))return 1;if(isNaN(p)&&!isNaN(m))return -1}return 0}var ve=xt(vue.version,"3.5.0")!==-1;function Ct(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?Ct():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ie(){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),p=vue.shallowRef(new Map);function m(o){let c=r.value.get(o);if(c)return c;{let f=vue.ref({});return r.value.set(o,f),f}}function d(o){let c=t.value.get(o);if(c)return c;{let f=vue.ref([]);return t.value.set(o,f),f}}function h(o,c,f){p.value.set(`${o}-${c}`,f);}function $(o,c){return p.value.get(`${o}-${c}`)}function C(o,c){o&&c!=null&&p.value.delete(`${o}-${c}`);}function F(o,c){n.value.set(o,c);}function O(o){return n.value.get(o)??!1}function a(o,c){e.value.set(o,c);}function x(o,c){let f=e.value.get(o);return f?P(c,f)?{valid:!0}:{valid:!1}:void 0}function P(o,c){let f=Object.keys(c),j=Object.keys(o);return j.length!==f.length||!j.every(w=>f.includes(w))?!1:j.every(w=>{let _=o[w],E=c[w];return !E||!_||typeof _=="function"||typeof E=="function"||typeof _=="number"||typeof _=="boolean"?!1:_._params?_._params?.every((v,b)=>{if(typeof E=="number"||typeof E=="boolean")return !0;{let k=W(E._params),V=W(_._params);return k?.[b]===V?.[b]}}):!0})}function M(o){let c=l.value.get(o);if(c)return c;{let f=vue.ref(!1),j=vue.ref(!0),N=vue.ref({}),w=vue.ref(!1);return l.value.set(o,{$pending:f,$valid:j,$metadata:N,$validating:w}),{$pending:f,$valid:j,$metadata:N,$validating:w}}}return vue.onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),n.value.clear(),l.value.clear(),p.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:F,checkRuleDeclEntry:x,getDirtyState:O,trySetRuleStatusRef:M,getFieldsEntry:m,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:h,deleteArrayStatus:C,arrayStatusStorage:p}}function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function tt(e,r){return X(e.value)&&X(r.value)&&!Object.entries(r.value).some(t=>ue(t))}function rt(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function nt(e){return !!e.value&&X(e.value)}function ue(e){return X(e)&&"_validator"in e}function ce(e){return typeof e.value!="function"}function at(e){return X(e)&&"$fields"in e}function Pe({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 lt({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 ot({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:p,storage:m,$debounce:d,modifiers:h}){let $=vue.effectScope(),C={},F,O=vue.ref(!1),{$pending:a,$valid:x,$metadata:P,$validating:M}=m.trySetRuleStatusRef(`${p}.${n}`);function o(){$=vue.effectScope(),C=$.run(()=>{let E=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:x.value,$invalid:!x.value,$pending:a.value},$params:I.value,...P.value})),v=vue.computed(()=>ce(t)?typeof t.value.active=="function"?t.value.active(E.value):!!t.value.active:!0);function b(i){let g="",u=r?r[n]?.[i]:void 0;if(u&&(typeof u=="function"?g=u(E.value):g=u),ce(t)){let S=`_${i}_patched`;u&&!t.value[S]||(typeof t.value[i]=="function"?g=t.value[i](E.value):g=t.value[i]??"");}return g}let k=vue.computed(()=>{let i=b("message");return L(i)&&(i="This field is not valid"),i}),V=vue.computed(()=>b("tooltip")),Y=vue.computed(()=>ce(t)&&t.value.type?t.value.type:n),D=vue.computed(()=>ce(t)?t.value.validator:t.value),I=vue.computed(()=>typeof t.value=="function"?[]:W(t.value._params??[])),s=vue.computed(()=>`${p}.${Y.value}`);return {$active:v,$message:k,$type:Y,$validator:D,$params:I,$path:s,$tooltip:V}}),F=vue.watch(C?.$params,()=>{(h.$autoDirty.value||h.$rewardEarly.value&&e.$error.value)&&N();});}o();function c(){x.value=!0,e.$dirty.value&&(a.value=!0);}async function f(){let E=!1;try{let v=C.$validator.value,b=v(l.value,...C.$params.value),k=l.value;c();let V;if(b instanceof Promise?V=await b:V=b,l.value!==k)return !0;if(typeof V=="boolean")E=V;else {let{$valid:Y,...D}=V;E=Y,P.value=D;}}catch{E=!1;}finally{a.value=!1;}return E}let j=ye(f,d??200);async function N(){try{M.value=!0;let E=!1;if(ue(t.value)&&t.value._async)E=await j();else {let v=C.$validator.value,b=v(l.value,...C.$params.value);if(b 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(b!=null)if(typeof b=="boolean")E=b;else {let{$valid:k,...V}=b;E=k,P.value=V;}}return x.value=E,E}catch{return !1}finally{M.value=!1;}}function w(){x.value=!0,P.value={},a.value=!1,M.value=!1,o();}function _(){F(),$.stop(),$=vue.effectScope();}return vue.reactive({...C,$pending:a,$valid:x,$metadata:P,$haveAsync:O,$validating:M,$validate:N,$unwatch:_,$watch:o,$reset:w})}function Se({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:p,options:m,externalErrors:d,onUnwatch:h,$isArray:$,initialState:C,shortcuts:F}){let O=vue.effectScope(),a,x=[],P,M,o,c,f=()=>{};function j(){let y=r.value,T=p.checkRuleDeclEntry(n,y);b.value=Object.fromEntries(Object.entries(y).filter(([R])=>R.startsWith("$"))),_(),v.value=Object.fromEntries(Object.entries(r.value).filter(([R])=>!R.startsWith("$")).map(([R,A])=>{if(A){let z=vue.toRef(()=>A);return [R,ot({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:z,ruleKey:R,state:e,path:n,storage:p,$debounce:b.value.$debounce})]}return []}).filter(R=>!!R.length)),a.processShortcuts(),N(),T?.valid!=null&&(a.$dirty.value=p.getDirtyState(n),a.$dirty.value&&f()),p.addRuleDeclEntry(n,y);}function N(){f=a.$debounce.value?ye(E,a.$debounce.value??a.$haveAnyAsyncRule?100:0):E;}function w(){v.value&&Object.entries(v.value).forEach(([y,T])=>{T.$unwatch();}),o(),a.$dirty.value&&p.setDirtyEntry(n,a.$dirty.value),P?.(),M?.(),O.stop(),O=vue.effectScope(),x.forEach(y=>y.stop()),x=[],h?.(),c?.();}function _(){v.value&&Object.entries(v.value).forEach(([y,T])=>{T.$watch();}),a=O.run(()=>{let y=vue.ref(!1),T=vue.ref(!1),R=vue.computed(()=>y.value),A=vue.computed(()=>b.value.$debounce),z=vue.computed(()=>b.value.$lazy!=null?b.value.$lazy:vue.unref(m.lazy)),te=vue.computed(()=>ke.value===!0?!1:b.value.$rewardEarly!=null?b.value.$rewardEarly:vue.unref(m.rewardEarly)),yt=vue.computed(()=>b.value.$clearExternalErrorsOnChange!=null?b.value.$clearExternalErrorsOnChange:vue.unref(m.clearExternalErrorsOnChange)),ke=vue.computed(()=>b.value.$autoDirty!=null?b.value.$autoDirty:vue.unref(m.autoDirty)),We=vue.computed(()=>Object.entries(v.value).some(([Q,Z])=>Z.$validating)),be=vue.computed(()=>me.value&&!de.value&&y.value),Ue=vue.computed(()=>be.value?Pe({field:{$dirty:y.value,$externalErrors:d?.value,$rules:v.value}}):[]),Be=vue.computed(()=>lt({field:{$rules:v.value}})),He=vue.computed(()=>Pe({field:{$dirty:y.value,$externalErrors:d?.value,$rules:v.value},silent:!0})),Le=vue.computed(()=>!(me.value||de.value)),de=vue.computed(()=>T.value||!te.value?Object.entries(v.value).some(([Q,Z])=>Z.$pending):!1),me=vue.computed(()=>d?.value?.length?!0:L(v.value)?!1:!te.value||te.value&&T.value?Object.entries(v.value).some(([Q,Z])=>!Z.$valid):!1),qe=vue.computed(()=>l),Te=vue.computed(()=>d?.value?.length||L(v.value)?!1:y.value&&!L(e.value)&&!We.value?Object.values(v.value).every(Q=>Q.$valid&&Q.$active):!1),vt=vue.computed(()=>Object.entries(v.value).some(([Q,Z])=>Z.$haveAsync));function $t(){F?.fields&&Object.entries(F.fields).forEach(([Q,Z])=>{let Je=vue.effectScope();ze[Q]=Je.run(()=>{let Ye=vue.ref();return vue.watchEffect(()=>{Ye.value=Z(vue.reactive({$dirty:y,$externalErrors:d?.value??[],$value:e,$rules:v,$error:be,$pending:de,$invalid:me,$valid:Te,$errors:Ue,$ready:Le,$silentErrors:He,$anyDirty:R,$tooltips:Be,$name:qe}));}),Ye}),x.push(Je);});}let ze={};return vue.watch(Te,Q=>{Q&&(T.value=!1);}),{$error:be,$pending:de,$invalid:me,$valid:Te,$debounce:A,$lazy:z,$errors:Ue,$ready:Le,$silentErrors:He,$rewardEarly:te,$autoDirty:ke,$clearExternalErrorsOnChange:yt,$anyDirty:R,$name:qe,$haveAnyAsyncRule:vt,$shortcuts:ze,$validating:We,$tooltips:Be,$dirty:y,triggerPunishment:T,processShortcuts:$t}}),P=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)&&f(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&s();},{deep:$?!0:ve?1:!0}),o=vue.watch(a.$dirty,()=>{p.setDirtyEntry(n,a.$dirty.value);}),M=vue.watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=!1);}),c=vue.watch(a.$haveAnyAsyncRule,N);}function E(){Object.values(v.value).forEach(y=>{y.$validate();});}let v=vue.ref({}),b=vue.ref({});j();function k(){s(),a.$dirty.value=!1,p.setDirtyEntry(n,!1),Object.entries(v.value).forEach(([y,T])=>{T.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(v.value).forEach(y=>y.$validate());}function V(y=!0,T=!1){a.$dirty.value||(a.$dirty.value=!0),T&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&f():y&&f();}async function Y(){try{let y=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:y};return L(v.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(v.value).map(([A,z])=>z.$validate()))).every(A=>A.status==="fulfilled"?A.value===!0:!1),data:y}}catch{return {result:!1,data:e.value}}}function D(){w(),e.value=U(C),k();}function I(y=!0){return a.$dirty.value?e.value:y?{_null:!0}:null}function s(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&f();let{$shortcuts:i,$validating:g,$autoDirty:u,$rewardEarly:S,$clearExternalErrorsOnChange:q,$haveAnyAsyncRule:H,$debounce:K,$lazy:ie,...ne}=a;return vue.reactive({...ne,$externalErrors:d,$value:e,$rules:v,...i,$reset:k,$touch:V,$validate:Y,$unwatch:w,$watch:_,$resetAll:D,$extractDirtyFields:I,$clearExternalErrors:s})}function Ae({$id:e,path:r,index:t,options:n,storage:l,stateValue:p,customMessages:m,rules:d,externalErrors:h,initialState:$,shortcuts:C,fieldName:F}){let O=d.$key?d.$key:$e(),a=`${r}.${String(O)}`;typeof p.value=="object"&&p.value!=null&&(p.value.$id?a=`${r}.${p.value.$id}`:Object.defineProperties(p.value,{$id:{value:O,enumerable:!1,configurable:!1,writable:!1}}));let x=pe({state:p,rulesDef:vue.toRef(()=>d),customMessages:m,path:a,storage:l,options:n,externalErrors:vue.toRef(h?.value??[],t),initialState:$?.[t],shortcuts:C,fieldName:F});if(x){let P=p.value?.$id;x.$id=P??String(O),l.addArrayStatus(e,x.$id,x);}return x}function ct({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:p,externalErrors:m,initialState:d,shortcuts:h,fieldName:$}){let C=vue.effectScope(),F,O=vue.effectScope(),a,x=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let P=vue.ref(),M=vue.ref(e.value),o,c=vue.ref({}),f=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(i=>typeof i!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(i=>ue(i)):!1)})),j(),w();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(P.value=$e(),Object.defineProperties(e.value,{$id:{value:P.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(P.value=e.value.$id)),!a.isPrimitiveArray.value&&(M.value=c.value.$value,Array.isArray(e.value)?f.value=e.value.map((s,i)=>{let{scope:g,unwrapped:u}=Ce(r.value.$each,vue.toRef(()=>s),i);g&&x.push(g);let S=Ae({$id:P.value,path:n,customMessages:t,rules:u??{},stateValue:vue.toRef(()=>s),index:i,options:p,storage:l,externalErrors:vue.toRef(m?.value??{},"$each"),initialState:d?.[i],shortcuts:h,fieldName:$});return S||null}).filter(s=>!!s):f.value=[],c.value=Se({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:p,externalErrors:vue.toRef(m?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:h,fieldName:$}));}function N(){if(Array.isArray(e.value)){let s=U(f.value);f.value=e.value.map((i,g)=>{let u=vue.toRef(()=>i);if(i.$id&&f.value.find(S=>S.$id===i.$id)){let S=l.getArrayStatus(P.value,i.$id);return S?(S.$value=u,S):null}else {let{scope:S,unwrapped:q}=Ce(r.value.$each,u,g);if(S&&x.push(S),q){let H=Ae({$id:P.value,path:n,customMessages:t,rules:q,stateValue:u,index:g,options:p,storage:l,externalErrors:vue.toRef(m?.value??{},"$each"),initialState:d?.[g],shortcuts:h,fieldName:$});return H||null}}}).filter(i=>!!i),s.filter(i=>!e.value.find(g=>i.$id===g.$id)).forEach((i,g)=>{l.deleteArrayStatus(P.value,g.toString());});}else f.value=[];}function w(){o=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():N();},{deep:ve?1:!0,flush:"pre"}),C=vue.effectScope(),F=C.run(()=>{let s=vue.computed(()=>c.value.$dirty&&f.value.every(R=>R.$dirty)),i=vue.computed(()=>c.value.$anyDirty||f.value.some(R=>R.$dirty)),g=vue.computed(()=>c.value.$invalid||f.value.some(R=>R.$invalid)),u=vue.computed(()=>(L(c.value.$rules)?!0:c.value.$valid)&&f.value.every(R=>R.$valid)),S=vue.computed(()=>c.value.$error||f.value.some(R=>R.$error)),q=vue.computed(()=>!(g.value||H.value)),H=vue.computed(()=>c.value.$pending||f.value.some(R=>R.$pending)),K=vue.computed(()=>({$self:c.value.$errors,$each:f.value.map(R=>R.$errors)})),ie=vue.computed(()=>({$self:c.value.$silentErrors,$each:f.value.map(R=>R.$silentErrors)})),ne=vue.computed(()=>$);function y(){h?.collections&&Object.entries(h?.collections).forEach(([R,A])=>{let z=vue.effectScope();T[R]=z.run(()=>{let te=vue.ref();return vue.watchEffect(()=>{te.value=A(vue.reactive({$dirty:s,$error:S,$pending:H,$invalid:g,$valid:u,$errors:K,$ready:q,$silentErrors:ie,$anyDirty:i,$name:ne,$each:f,$field:c,$value:e}));}),te}),x.push(z);});}let T={};return y(),{$dirty:s,$anyDirty:i,$invalid:g,$valid:u,$error:S,$pending:H,$errors:K,$silentErrors:ie,$ready:q,$name:ne,$shortcuts:T}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function _(){o&&o(),c.value&&c.value.$unwatch(),f.value&&f.value.forEach(s=>{"$dirty"in s&&s.$unwatch();}),C.stop(),C=vue.effectScope(),O.stop(),O=vue.effectScope(!0),x.forEach(s=>s.stop()),x=[];}function E(s=!0,i=!1){c.value.$touch(s,i),f.value.forEach(g=>{g.$touch(s,i);});}function v(){c.value.$reset(),f.value.forEach(s=>{s.$reset();});}async function b(){let s=e.value;try{return {result:(await Promise.allSettled([c.value.$validate(),...f.value.map(u=>u.$validate())])).every(u=>u.status==="fulfilled"?u.value.result===!0:!1),data:s}}catch{return {result:!1,data:s}}}function k(){c.value.$clearExternalErrors(),f.value.forEach(s=>{s.$clearExternalErrors();});}function V(s=!0){let i=f.value.map(g=>{if(at(g))return g.$extractDirtyFields(s)});return s&&i.every(g=>L(g))&&(i=[]),i}function Y(){_(),e.value=U(d),v();}let{$shortcuts:D,...I}=F;return vue.reactive({$field:c,...I,...D,$each:f,$value:e,$validate:b,$unwatch:_,$watch:w,$touch:E,$reset:v,$resetAll:Y,$extractDirtyFields:V,$clearExternalErrors:k})}function Me({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:p,initialState:m,fieldName:d,...h}){let $=vue.effectScope(),C,F=[],O=null,a=null,x=null;async function M(D=!0){let I=Object.entries(e.value),s=Object.fromEntries(I.filter(([u,S])=>!!S).map(([u,S])=>{if(S){let q=vue.toRef(r.value,u),H=vue.toRef(()=>S),K=vue.toRef(l?.value??{},u);return [u,pe({state:q,rulesDef:H,path:t?`${t}.${u}`:u,externalErrors:K,initialState:m?.[u],fieldName:u,...h})]}return []})),i=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([u,S])=>!(u in e.value)&&!!S).map(([u])=>{let S=vue.toRef(r.value,u);return [u,pe({state:S,rulesDef:vue.computed(()=>({})),path:t?`${t}.${u}`:u,externalErrors:vue.toRef(l?.value??{},u),initialState:m?.[u],fieldName:u,...h})]})),g=Object.fromEntries(Object.entries(r.value).filter(([u])=>!(u in e.value)&&!(u in(i.value??{}))).map(([u])=>{let S=vue.toRef(r.value,u);return [u,pe({state:S,rulesDef:vue.computed(()=>({})),path:t?`${t}.${u}`:u,externalErrors:vue.toRef(l?.value??{},u),initialState:m?.[u],fieldName:u,...h})]}));o.value={...s,...i,...g},D&&N();}let o=h.storage.getFieldsEntry(t);M();function c(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),j();}function f(D=!0,I=!1){Object.values(o.value).forEach(s=>{s.$touch(D,I);});}function j(){l?.value&&(a=vue.watch(l,()=>{w(),M();},{deep:!0}));}function N(){n&&(O=vue.watch(n,()=>{w(),M();},{deep:!0,flush:"post"}),j()),x=vue.watch(r,()=>{w(),M(),f(!0,!0);},{flush:"sync"}),$=vue.effectScope(),C=$.run(()=>{let D=vue.computed({get:()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([T,R])=>R?.$dirty),set(){}}),I=vue.computed({get:()=>Object.entries(o.value).some(([T,R])=>R?.$dirty),set(){}}),s=vue.computed({get:()=>Object.entries(o.value).some(([T,R])=>R?.$invalid),set(){}}),i=vue.computed({get:()=>Object.entries(o.value).every(([T,R])=>R?.$valid),set(){}}),g=vue.computed({get:()=>I.value&&!S.value&&s.value,set(){}}),u=vue.computed({get:()=>vue.unref(h.options.autoDirty)?I.value&&!(s.value||S.value):!(s.value||S.value),set(){}}),S=vue.computed({get:()=>Object.entries(o.value).some(([T,R])=>R?.$pending),set(){}}),q=vue.computed({get:()=>Object.fromEntries(Object.entries(o.value).map(([T,R])=>[T,R?.$errors])),set(){}}),H=vue.computed({get:()=>Object.fromEntries(Object.entries(o.value).map(([T,R])=>[T,R?.$silentErrors])),set(){}}),K=vue.computed({get:()=>d,set(){}});function ie(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([T,R])=>{let A=vue.effectScope();y[T]=A.run(()=>{let z=vue.ref();return vue.watchEffect(()=>{z.value=R(vue.reactive({$dirty:D,$value:r,$error:g,$pending:S,$invalid:s,$valid:i,$ready:u,$anyDirty:I,$name:K,$silentErrors:H,$errors:q,$fields:o}));}),z}),F.push(A);});}let ne=vue.computed({get:()=>p?Object.fromEntries(Object.entries(p?.(o.value)??{}).map(([T,R])=>R.length?[T,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(A=>[A,Qe(R,A)])),...Object.fromEntries(["$errors","$silentErrors"].map(A=>[A,Xe(R,A)]))}]:[])):{},set(){}}),y={};return ie(),{$dirty:D,$anyDirty:I,$invalid:s,$valid:i,$error:g,$pending:S,$errors:q,$silentErrors:H,$ready:u,$name:K,$shortcuts:y,$groups:ne}});}function w(){O?.(),a?.(),x?.(),F.forEach(D=>D.stop()),F=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,I])=>{I.$unwatch();});}function _(){Object.entries(o.value).forEach(([D,I])=>{I.$clearExternalErrors();});}async function E(){w(),r.value=U({...m??{}}),c(),M();}function v(D){return D.filter(([I,s])=>X(s)?!(s&&typeof s=="object"&&"_null"in s)&&!L(s):Array.isArray(s)?s.length:!0)}function b(D=!0){let I=Object.entries(o.value).map(([s,i])=>[s,i.$extractDirtyFields(D)]);return D&&(I=v(I)),Object.fromEntries(I)}async function k(){try{let D=r.value;return {result:(await Promise.allSettled(Object.values(o.value).map(i=>i.$validate()))).every(i=>i.status==="fulfilled"?i.value.result===!0:!1),data:D}}catch{return {result:!1,data:r.value}}}let{$shortcuts:V,...Y}=C;return vue.reactive({...Y,...V,$fields:o,$value:r,$resetAll:E,$reset:c,$touch:f,$validate:k,$unwatch:w,$watch:N,$clearExternalErrors:_,$extractDirtyFields:b})}function pe({rulesDef:e,externalErrors:r,...t}){return rt(e,t.state)?ct({rulesDef:e,externalErrors:r,...t}):tt(t.state,e)&&et(t.state)?Me({rulesDef:e,externalErrors:r,...t}):nt(e)?Se({rulesDef:e,externalErrors:r,...t}):null}function _e({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:p}){let m=Ie(),d=vue.ref();return d.value=Me({rootRules:t,rulesDef:t,state:n,customMessages:l?.(),storage:m,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:p,fieldName:"root",path:""}),vue.onScopeDispose(()=>{d.value?.$unwatch();}),vue.reactive({regle:d})}function Ve(e,r,t){let n={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function l(p,m,d){let h=vue.isRef(m)?m:vue.computed(typeof m=="function"?m:()=>m),$={...n,...d},C=vue.isRef(p)?p:vue.ref(p),F={...U(C.value)};return {r$:_e({scopeRules:h,state:C,options:$,initialState:F,customRules:e,shortcuts:t}).regle}}return l}var dt=Ve();function Ge(){function e(r,t){return t}return e}var Ne=Ge();function mt({rules:e,modifiers:r,shortcuts:t}){let n=Ve(e,r,t),l=Ge();return {useRegle:n,inferRules:l}}
2
- exports.InternalRuleType=Ee;exports.createRule=xe;exports.defineRegleConfig=mt;exports.inferRules=Ne;exports.unwrapRuleParameters=W;exports.useRegle=dt;
1
+ 'use strict';var vue=require('vue');var xe=(t=>(t.Inline="__inline",t.Async="__async",t))(xe||{});function Ke(e,r){return e.some(t=>t[r])}function et(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 tt(e){return e.map(r=>r instanceof Function?vue.computed(r):vue.isRef(r)?r:vue.toRef(()=>r))}function rt(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 Ce(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(x=>($=x,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:tt(r)}}function Ie(e){if(typeof e.validator=="function"){let t=Ce(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(rt(e.validator)>1){let l=function(...R){return Ce(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 Z(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function nt(e){return e.value instanceof Date||e.value instanceof File?!1:Z(e.value)}function L(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>L(n)))),t=="Map"&&(r=new Map([...e].map(n=>[L(n[0]),L(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,xt(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=L(e[n]);}return r}function xt(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 Pe(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 It(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 ge=It(vue.version,"3.5.0")!==-1;function Pt(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Pt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}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 s=r.value.get(u);if(s)return s;{let c=vue.ref({});return r.value.set(u,c),c}}function d(u){let s=t.value.get(u);if(s)return s;{let c=vue.ref([]);return t.value.set(u,c),c}}function S(u,s,c){R.value.set(`${u}-${s}`,c);}function $(u,s){return R.value.get(`${u}-${s}`)}function x(u,s){u&&s!=null&&R.value.delete(`${u}-${s}`);}function F(u,s){n.value.set(u,s);}function O(u){return n.value.get(u)??!1}function a(u,s){e.value.set(u,s);}function E(u,s){let c=e.value.get(u);return c?C(s,c)?{valid:!0}:{valid:!1}:void 0}function C(u,s){let c=Object.keys(s),j=Object.keys(u);return j.length!==c.length||!j.every(_=>c.includes(_))?!1:j.every(_=>{let P=u[_],b=s[_];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 s=l.value.get(u);if(s)return s;{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.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:x,arrayStatusStorage:R}}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}function at(e,r){return Z(e.value)&&Z(r.value)&&!Object.entries(r.value).some(t=>ce(t))}function lt(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function ot(e){return !!e.value&&Z(e.value)}function ce(e){return Z(e)&&"_validator"in e}function fe(e){return typeof e.value!="function"}function ut(e){return Z(e)&&"$fields"in e}function Oe({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 st({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:R,storage:y,$debounce:d,modifiers:S}){let $=vue.effectScope(),x={},F,O=vue.ref(!1),{$pending:a,$valid:E,$metadata:C,$validating:M}=y.trySetRuleStatusRef(`${R}.${n}`);function u(){$=vue.effectScope(),x=$.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:D.value,...C.value})),W=vue.computed(()=>fe(t)?typeof t.value.active=="function"?t.value.active(b.value):!!t.value.active:!0);function m(o){let i="",g=r?r[n]?.[o]:void 0;if(g&&(typeof g=="function"?i=g(b.value):i=g),fe(t)){let f=`_${o}_patched`;g&&!t.value[f]||(typeof t.value[o]=="function"?i=t.value[o](b.value):i=t.value[o]??"");}return i}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(()=>fe(t)&&t.value.type?t.value.type:n),K=vue.computed(()=>fe(t)?t.value.validator:t.value),D=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:D,$path:w,$tooltip:V}}),F=vue.watch(x?.$params,()=>{(S.$autoDirty.value||S.$rewardEarly.value&&e.$error.value)&&k();});}u();function s(){E.value=!0,e.$dirty.value&&(a.value=!0);}async function c(){let b=!1;try{let W=x.$validator.value,m=W(l.value,...x.$params.value),I=l.value;s();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(ce(t.value)&&t.value._async)b=await j();else {let W=x.$validator.value,m=W(l.value,...x.$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({...x,$pending:a,$valid:E,$metadata:C,$haveAsync:O,$validating:M,$validate:k,$unwatch:P,$watch:u,$reset:_})}function be({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:R,options:y,externalErrors:d,onUnwatch:S,$isArray:$,initialState:x,shortcuts:F}){let O=vue.effectScope(),a,E=[],C,M,u,s,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,st({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?$e(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?.(),s?.();}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)),me=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)),He=vue.computed({get:()=>e.value,set(q){C(),e.value=q,b();}}),Ee=vue.computed(()=>ve.value&&!ye.value&&v.value),Le=vue.computed(()=>Ee.value?Oe({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value}}):[]),qe=vue.computed(()=>it({field:{$rules:m.value}})),ze=vue.computed(()=>Oe({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),Je=vue.computed(()=>!(ve.value||ye.value)),ye=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:v.value&&!z(e.value)&&!Be.value?Object.values(m.value).every(q=>q.$valid&&q.$active):!1),gt=vue.computed(()=>Object.entries(m.value).some(([q,te])=>te.$haveAsync));function St(){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:He,$rules:m,$error:Ee,$pending:ye,$invalid:ve,$valid:De,$errors:Le,$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:Ee,$pending:ye,$invalid:ve,$valid:De,$debounce:p,$lazy:N,$errors:Le,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:Ue,$clearExternalErrorsOnChange:me,$anyDirty:h,$name:Ye,$haveAnyAsyncRule:gt,$shortcuts:Qe,$validating:Be,$tooltips:qe,$dirty:v,triggerPunishment:A,processShortcuts:St,$silentValue:He}}),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);}),s=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:ge?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 D(){_(),e.value=L(x),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:i,$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,...i,$reset:V,$touch:Q,$validate:K,$unwatch:_,$watch:P,$resetAll:D,$extractDirtyFields:w,$clearExternalErrors:o})}function Me({$id:e,path:r,index:t,options:n,storage:l,stateValue:R,customMessages:y,rules:d,externalErrors:S,initialState:$,shortcuts:x,fieldName:F}){let O=d.$key?d.$key:Se(),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=de({state:R,rulesDef:vue.toRef(()=>d),customMessages:y,path:a,storage:l,options:n,externalErrors:vue.toRef(S?.value??[],t),initialState:$?.[t],shortcuts:x,fieldName:F});if(E){let C=R.value?.$id;E.$id=C??String(O),l.addArrayStatus(e,E.$id,E);}return E}function pt({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:y,initialState:d,shortcuts:S,fieldName:$}){let x=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,s=vue.ref({}),c=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(i=>typeof i!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(i=>ce(i)):!1)})),j(),P();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Se(),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=s.value.$value,Array.isArray(e.value)?c.value=e.value.map((o,i)=>{let{scope:g,unwrapped:f}=Pe(r.value.$each,vue.toRef(()=>o),i);g&&E.push(g);let T=Me({$id:C.value,path:n,customMessages:t,rules:f??{},stateValue:vue.toRef(()=>o),index:i,options:R,storage:l,externalErrors:vue.toRef(y?.value??{},"$each"),initialState:d?.[i],shortcuts:S,fieldName:$});return T||null}).filter(o=>!!o):c.value=[],s.value=be({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=L(c.value);c.value=e.value.map((i,g)=>{let f=vue.toRef(()=>i);if(i.$id&&c.value.find(T=>T.$id===i.$id)){let T=l.getArrayStatus(C.value,i.$id);return T?(T.$value=f,T):null}else {let{scope:T,unwrapped:U}=Pe(r.value.$each,f,g);if(T&&E.push(T),U){let Y=Me({$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(i=>!!i),o.filter(i=>!e.value.find(g=>i.$id===g.$id)).forEach((i,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:ge?1:!0,flush:"pre"});}function P(){_(),x=vue.effectScope(),F=x.run(()=>{let o=vue.computed({get:()=>e.value,set(p){u(),e.value=p,_();}}),i=vue.computed(()=>s.value.$dirty&&c.value.every(p=>p.$dirty)),g=vue.computed(()=>s.value.$anyDirty||c.value.some(p=>p.$dirty)),f=vue.computed(()=>s.value.$invalid||c.value.some(p=>p.$invalid)),T=vue.computed(()=>(z(s.value.$rules)?!0:s.value.$valid)&&c.value.every(p=>p.$valid)),U=vue.computed(()=>s.value.$error||c.value.some(p=>p.$error)),Y=vue.computed(()=>!(f.value||ee.value)),ee=vue.computed(()=>s.value.$pending||c.value.some(p=>p.$pending)),ae=vue.computed(()=>({$self:s.value.$errors,$each:c.value.map(p=>p.$errors)})),le=vue.computed(()=>({$self:s.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 me=vue.ref();return vue.watchEffect(()=>{me.value=N(vue.reactive({$dirty:i,$error:U,$silentValue:o,$pending:ee,$invalid:f,$valid:T,$errors:ae,$ready:Y,$silentErrors:le,$anyDirty:g,$name:v,$each:c,$field:s,$value:e}));}),me}),E.push(X);});}let h={};return A(),{$dirty:i,$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(),s.value&&s.value.$unwatch(),c.value&&c.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),x.stop(),x=vue.effectScope(),O.stop(),O=vue.effectScope(!0),E.forEach(o=>o.stop()),E=[];}function W(o=!0,i=!1){s.value.$touch(o,i),c.value.forEach(g=>{g.$touch(o,i);});}function m(){s.value.$reset(),c.value.forEach(o=>{o.$reset();});}async function I(){let o=e.value;try{return {result:(await Promise.allSettled([s.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(){s.value.$clearExternalErrors(),c.value.forEach(o=>{o.$clearExternalErrors();});}function Q(o=!0){let i=c.value.map(g=>{if(ut(g))return g.$extractDirtyFields(o)});return o&&i.every(g=>z(g))&&(i=[]),i}function K(){b(),e.value=L(d),m();}let{$shortcuts:D,...w}=F;return vue.reactive({$field:s,...w,...D,$each:c,$value:e,$validate:I,$unwatch:b,$watch:P,$touch:W,$reset:m,$resetAll:K,$extractDirtyFields:Q,$clearExternalErrors:V})}function Ve({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:R,initialState:y,fieldName:d,...S}){let $=vue.effectScope(),x,F=[],O=null,a=null,E=null;async function M(D=!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,de({state:U,rulesDef:Y,path:t?`${t}.${f}`:f,externalErrors:ee,initialState:y?.[f],fieldName:f,...S})]}return []})),i=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,de({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(i.value??{}))).map(([f])=>{let T=vue.toRef(r.value,f);return [f,de({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,...i,...g},D&&_();}let u=S.storage.getFieldsEntry(t);M();function s(){a?.(),Object.values(u.value).forEach(D=>{D.$reset();}),j();}function c(D=!0,w=!1){Object.values(u.value).forEach(o=>{o.$touch(D,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(),x=$.run(()=>{let D=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(){}}),i=vue.computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$invalid),set(){}}),g=vue.computed({get:()=>Object.entries(u.value).every(([h,p])=>p?.$valid),set(){}}),f=vue.computed({get:()=>o.value&&!U.value&&i.value,set(){}}),T=vue.computed({get:()=>vue.unref(S.options.autoDirty)?o.value&&!(i.value||U.value):!(i.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:D,$error:f,$pending:U,$invalid:i,$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,Ke(p,N)])),...Object.fromEntries(["$errors","$silentErrors"].map(N=>[N,et(p,N)]))}]:[])):{},set(){}}),A={};return le(),{$dirty:w,$anyDirty:o,$invalid:i,$valid:g,$error:f,$pending:U,$errors:Y,$silentErrors:ee,$ready:T,$name:ae,$shortcuts:A,$groups:v,$silentValue:D}});}function P(){O?.(),a?.(),E?.(),F.forEach(D=>D.stop()),F=[],$.stop(),u.value&&Object.entries(u.value).forEach(([D,w])=>{w.$unwatch();});}function b(){Object.entries(u.value).forEach(([D,w])=>{w.$clearExternalErrors();});}async function W(){P(),r.value=L({...y??{}}),s(),M();}function m(D){return D.filter(([w,o])=>Z(o)?!(o&&typeof o=="object"&&"_null"in o)&&!z(o):Array.isArray(o)?o.length:!0)}function I(D=!0){let w=Object.entries(u.value).map(([o,i])=>[o,i.$extractDirtyFields(D)]);return D&&(w=m(w)),Object.fromEntries(w)}async function V(){try{let D=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(i=>i.$validate()))).every(i=>i.status==="fulfilled"?i.value.result===!0:!1),data:D}}catch{return {result:!1,data:r.value}}}let{$shortcuts:Q,...K}=x;return vue.reactive({...K,...Q,$fields:u,$value:r,$resetAll:W,$reset:s,$touch:c,$validate:V,$unwatch:P,$watch:_,$clearExternalErrors:b,$extractDirtyFields:I})}function de({rulesDef:e,externalErrors:r,...t}){return lt(e,t.state)?pt({rulesDef:e,externalErrors:r,...t}):at(t.state,e)&&nt(t.state)?Ve({rulesDef:e,externalErrors:r,...t}):ot(e)?be({rulesDef:e,externalErrors:r,...t}):null}function Ge({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:R}){let y=we(),d=vue.ref();return d.value=Ve({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.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},x=vue.isRef(R)?R:vue.ref(R),F={...L(x.value)};return {r$:Ge({scopeRules:S,state:x,options:$,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=xe;exports.createRule=Ie;exports.defineRegleConfig=$t;exports.inferRules=We;exports.unwrapRuleParameters=B;exports.useRegle=vt;
@@ -1,2 +1,2 @@
1
- import {toValue,version,computed,isRef,toRef,ref,onScopeDispose,reactive,shallowRef,effectScope,unref,watch,watchEffect}from'vue';var Ee=(t=>(t.Inline="__inline",t.Async="__async",t))(Ee||{});function Qe(e,r){return e.some(t=>t[r])}function Xe(e,r){return e.reduce((t,n)=>{let l=n[r]||[];return t.concat(l)},[])}function W(e){try{return e.map(r=>toValue(r))}catch{return []}}function Ze(e){return e.map(r=>r instanceof Function?computed(r):isRef(r)?r:toRef(()=>r))}function Ke(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(m=>m.trim()).filter(m=>m.length>0).length:0}function De(e,...r){let{validator:t,type:n}=e,l=n==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(d,...h){return e.validator(d,...W(h.length?h:r))},message(d){return typeof e.message=="function"?e.message({...d,$params:W(d?.$params?.length?d.$params:r)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:W(d?.$params?.length?d.$params:r)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:W(d?.$params?.length?d.$params:r)}):e.tooltip??[]},exec(d){let h=e.validator(d,...W(r)),$;return h instanceof Promise?h.then(C=>($=C,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=h,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:Ze(r)}}function xe(e){if(typeof e.validator=="function"){let t=De(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Ke(e.validator)>1){let l=function(...p){return De(e,...p)};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 X(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function et(e){return X(e.value)}function U(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>U(n)))),t=="Map"&&(r=new Map([...e].map(n=>[U(n[0]),U(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,Et(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=U(e[n]);}return r}function Et(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 Ce(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 ye(e,r,t){let n,l=(...p)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...p])).then(m);},r);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function xt(e,r){let t=String(e).split("."),n=String(r).split(".");for(let l=0;l<Math.min(t.length,n.length);l++){let p=Number(t[l]),m=Number(n[l]);if(p>m)return 1;if(m>p)return -1;if(!isNaN(p)&&isNaN(m))return 1;if(isNaN(p)&&!isNaN(m))return -1}return 0}var ve=xt(version,"3.5.0")!==-1;function Ct(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?Ct():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ie(){let e=shallowRef(new Map),r=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),p=shallowRef(new Map);function m(o){let c=r.value.get(o);if(c)return c;{let f=ref({});return r.value.set(o,f),f}}function d(o){let c=t.value.get(o);if(c)return c;{let f=ref([]);return t.value.set(o,f),f}}function h(o,c,f){p.value.set(`${o}-${c}`,f);}function $(o,c){return p.value.get(`${o}-${c}`)}function C(o,c){o&&c!=null&&p.value.delete(`${o}-${c}`);}function F(o,c){n.value.set(o,c);}function O(o){return n.value.get(o)??!1}function a(o,c){e.value.set(o,c);}function x(o,c){let f=e.value.get(o);return f?P(c,f)?{valid:!0}:{valid:!1}:void 0}function P(o,c){let f=Object.keys(c),j=Object.keys(o);return j.length!==f.length||!j.every(w=>f.includes(w))?!1:j.every(w=>{let _=o[w],E=c[w];return !E||!_||typeof _=="function"||typeof E=="function"||typeof _=="number"||typeof _=="boolean"?!1:_._params?_._params?.every((v,b)=>{if(typeof E=="number"||typeof E=="boolean")return !0;{let k=W(E._params),V=W(_._params);return k?.[b]===V?.[b]}}):!0})}function M(o){let c=l.value.get(o);if(c)return c;{let f=ref(!1),j=ref(!0),N=ref({}),w=ref(!1);return l.value.set(o,{$pending:f,$valid:j,$metadata:N,$validating:w}),{$pending:f,$valid:j,$metadata:N,$validating:w}}}return onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),n.value.clear(),l.value.clear(),p.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:F,checkRuleDeclEntry:x,getDirtyState:O,trySetRuleStatusRef:M,getFieldsEntry:m,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:h,deleteArrayStatus:C,arrayStatusStorage:p}}function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function tt(e,r){return X(e.value)&&X(r.value)&&!Object.entries(r.value).some(t=>ue(t))}function rt(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function nt(e){return !!e.value&&X(e.value)}function ue(e){return X(e)&&"_validator"in e}function ce(e){return typeof e.value!="function"}function at(e){return X(e)&&"$fields"in e}function Pe({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 lt({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 ot({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:p,storage:m,$debounce:d,modifiers:h}){let $=effectScope(),C={},F,O=ref(!1),{$pending:a,$valid:x,$metadata:P,$validating:M}=m.trySetRuleStatusRef(`${p}.${n}`);function o(){$=effectScope(),C=$.run(()=>{let E=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:x.value,$invalid:!x.value,$pending:a.value},$params:I.value,...P.value})),v=computed(()=>ce(t)?typeof t.value.active=="function"?t.value.active(E.value):!!t.value.active:!0);function b(i){let g="",u=r?r[n]?.[i]:void 0;if(u&&(typeof u=="function"?g=u(E.value):g=u),ce(t)){let S=`_${i}_patched`;u&&!t.value[S]||(typeof t.value[i]=="function"?g=t.value[i](E.value):g=t.value[i]??"");}return g}let k=computed(()=>{let i=b("message");return L(i)&&(i="This field is not valid"),i}),V=computed(()=>b("tooltip")),Y=computed(()=>ce(t)&&t.value.type?t.value.type:n),D=computed(()=>ce(t)?t.value.validator:t.value),I=computed(()=>typeof t.value=="function"?[]:W(t.value._params??[])),s=computed(()=>`${p}.${Y.value}`);return {$active:v,$message:k,$type:Y,$validator:D,$params:I,$path:s,$tooltip:V}}),F=watch(C?.$params,()=>{(h.$autoDirty.value||h.$rewardEarly.value&&e.$error.value)&&N();});}o();function c(){x.value=!0,e.$dirty.value&&(a.value=!0);}async function f(){let E=!1;try{let v=C.$validator.value,b=v(l.value,...C.$params.value),k=l.value;c();let V;if(b instanceof Promise?V=await b:V=b,l.value!==k)return !0;if(typeof V=="boolean")E=V;else {let{$valid:Y,...D}=V;E=Y,P.value=D;}}catch{E=!1;}finally{a.value=!1;}return E}let j=ye(f,d??200);async function N(){try{M.value=!0;let E=!1;if(ue(t.value)&&t.value._async)E=await j();else {let v=C.$validator.value,b=v(l.value,...C.$params.value);if(b 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(b!=null)if(typeof b=="boolean")E=b;else {let{$valid:k,...V}=b;E=k,P.value=V;}}return x.value=E,E}catch{return !1}finally{M.value=!1;}}function w(){x.value=!0,P.value={},a.value=!1,M.value=!1,o();}function _(){F(),$.stop(),$=effectScope();}return reactive({...C,$pending:a,$valid:x,$metadata:P,$haveAsync:O,$validating:M,$validate:N,$unwatch:_,$watch:o,$reset:w})}function Se({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:p,options:m,externalErrors:d,onUnwatch:h,$isArray:$,initialState:C,shortcuts:F}){let O=effectScope(),a,x=[],P,M,o,c,f=()=>{};function j(){let y=r.value,T=p.checkRuleDeclEntry(n,y);b.value=Object.fromEntries(Object.entries(y).filter(([R])=>R.startsWith("$"))),_(),v.value=Object.fromEntries(Object.entries(r.value).filter(([R])=>!R.startsWith("$")).map(([R,A])=>{if(A){let z=toRef(()=>A);return [R,ot({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:z,ruleKey:R,state:e,path:n,storage:p,$debounce:b.value.$debounce})]}return []}).filter(R=>!!R.length)),a.processShortcuts(),N(),T?.valid!=null&&(a.$dirty.value=p.getDirtyState(n),a.$dirty.value&&f()),p.addRuleDeclEntry(n,y);}function N(){f=a.$debounce.value?ye(E,a.$debounce.value??a.$haveAnyAsyncRule?100:0):E;}function w(){v.value&&Object.entries(v.value).forEach(([y,T])=>{T.$unwatch();}),o(),a.$dirty.value&&p.setDirtyEntry(n,a.$dirty.value),P?.(),M?.(),O.stop(),O=effectScope(),x.forEach(y=>y.stop()),x=[],h?.(),c?.();}function _(){v.value&&Object.entries(v.value).forEach(([y,T])=>{T.$watch();}),a=O.run(()=>{let y=ref(!1),T=ref(!1),R=computed(()=>y.value),A=computed(()=>b.value.$debounce),z=computed(()=>b.value.$lazy!=null?b.value.$lazy:unref(m.lazy)),te=computed(()=>ke.value===!0?!1:b.value.$rewardEarly!=null?b.value.$rewardEarly:unref(m.rewardEarly)),yt=computed(()=>b.value.$clearExternalErrorsOnChange!=null?b.value.$clearExternalErrorsOnChange:unref(m.clearExternalErrorsOnChange)),ke=computed(()=>b.value.$autoDirty!=null?b.value.$autoDirty:unref(m.autoDirty)),We=computed(()=>Object.entries(v.value).some(([Q,Z])=>Z.$validating)),be=computed(()=>me.value&&!de.value&&y.value),Ue=computed(()=>be.value?Pe({field:{$dirty:y.value,$externalErrors:d?.value,$rules:v.value}}):[]),Be=computed(()=>lt({field:{$rules:v.value}})),He=computed(()=>Pe({field:{$dirty:y.value,$externalErrors:d?.value,$rules:v.value},silent:!0})),Le=computed(()=>!(me.value||de.value)),de=computed(()=>T.value||!te.value?Object.entries(v.value).some(([Q,Z])=>Z.$pending):!1),me=computed(()=>d?.value?.length?!0:L(v.value)?!1:!te.value||te.value&&T.value?Object.entries(v.value).some(([Q,Z])=>!Z.$valid):!1),qe=computed(()=>l),Te=computed(()=>d?.value?.length||L(v.value)?!1:y.value&&!L(e.value)&&!We.value?Object.values(v.value).every(Q=>Q.$valid&&Q.$active):!1),vt=computed(()=>Object.entries(v.value).some(([Q,Z])=>Z.$haveAsync));function $t(){F?.fields&&Object.entries(F.fields).forEach(([Q,Z])=>{let Je=effectScope();ze[Q]=Je.run(()=>{let Ye=ref();return watchEffect(()=>{Ye.value=Z(reactive({$dirty:y,$externalErrors:d?.value??[],$value:e,$rules:v,$error:be,$pending:de,$invalid:me,$valid:Te,$errors:Ue,$ready:Le,$silentErrors:He,$anyDirty:R,$tooltips:Be,$name:qe}));}),Ye}),x.push(Je);});}let ze={};return watch(Te,Q=>{Q&&(T.value=!1);}),{$error:be,$pending:de,$invalid:me,$valid:Te,$debounce:A,$lazy:z,$errors:Ue,$ready:Le,$silentErrors:He,$rewardEarly:te,$autoDirty:ke,$clearExternalErrorsOnChange:yt,$anyDirty:R,$name:qe,$haveAnyAsyncRule:vt,$shortcuts:ze,$validating:We,$tooltips:Be,$dirty:y,triggerPunishment:T,processShortcuts:$t}}),P=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)&&f(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&s();},{deep:$?!0:ve?1:!0}),o=watch(a.$dirty,()=>{p.setDirtyEntry(n,a.$dirty.value);}),M=watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=!1);}),c=watch(a.$haveAnyAsyncRule,N);}function E(){Object.values(v.value).forEach(y=>{y.$validate();});}let v=ref({}),b=ref({});j();function k(){s(),a.$dirty.value=!1,p.setDirtyEntry(n,!1),Object.entries(v.value).forEach(([y,T])=>{T.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(v.value).forEach(y=>y.$validate());}function V(y=!0,T=!1){a.$dirty.value||(a.$dirty.value=!0),T&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&f():y&&f();}async function Y(){try{let y=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:y};return L(v.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(v.value).map(([A,z])=>z.$validate()))).every(A=>A.status==="fulfilled"?A.value===!0:!1),data:y}}catch{return {result:!1,data:e.value}}}function D(){w(),e.value=U(C),k();}function I(y=!0){return a.$dirty.value?e.value:y?{_null:!0}:null}function s(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&f();let{$shortcuts:i,$validating:g,$autoDirty:u,$rewardEarly:S,$clearExternalErrorsOnChange:q,$haveAnyAsyncRule:H,$debounce:K,$lazy:ie,...ne}=a;return reactive({...ne,$externalErrors:d,$value:e,$rules:v,...i,$reset:k,$touch:V,$validate:Y,$unwatch:w,$watch:_,$resetAll:D,$extractDirtyFields:I,$clearExternalErrors:s})}function Ae({$id:e,path:r,index:t,options:n,storage:l,stateValue:p,customMessages:m,rules:d,externalErrors:h,initialState:$,shortcuts:C,fieldName:F}){let O=d.$key?d.$key:$e(),a=`${r}.${String(O)}`;typeof p.value=="object"&&p.value!=null&&(p.value.$id?a=`${r}.${p.value.$id}`:Object.defineProperties(p.value,{$id:{value:O,enumerable:!1,configurable:!1,writable:!1}}));let x=pe({state:p,rulesDef:toRef(()=>d),customMessages:m,path:a,storage:l,options:n,externalErrors:toRef(h?.value??[],t),initialState:$?.[t],shortcuts:C,fieldName:F});if(x){let P=p.value?.$id;x.$id=P??String(O),l.addArrayStatus(e,x.$id,x);}return x}function ct({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:p,externalErrors:m,initialState:d,shortcuts:h,fieldName:$}){let C=effectScope(),F,O=effectScope(),a,x=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let P=ref(),M=ref(e.value),o,c=ref({}),f=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(i=>typeof i!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(i=>ue(i)):!1)})),j(),w();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(P.value=$e(),Object.defineProperties(e.value,{$id:{value:P.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(P.value=e.value.$id)),!a.isPrimitiveArray.value&&(M.value=c.value.$value,Array.isArray(e.value)?f.value=e.value.map((s,i)=>{let{scope:g,unwrapped:u}=Ce(r.value.$each,toRef(()=>s),i);g&&x.push(g);let S=Ae({$id:P.value,path:n,customMessages:t,rules:u??{},stateValue:toRef(()=>s),index:i,options:p,storage:l,externalErrors:toRef(m?.value??{},"$each"),initialState:d?.[i],shortcuts:h,fieldName:$});return S||null}).filter(s=>!!s):f.value=[],c.value=Se({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:p,externalErrors:toRef(m?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:h,fieldName:$}));}function N(){if(Array.isArray(e.value)){let s=U(f.value);f.value=e.value.map((i,g)=>{let u=toRef(()=>i);if(i.$id&&f.value.find(S=>S.$id===i.$id)){let S=l.getArrayStatus(P.value,i.$id);return S?(S.$value=u,S):null}else {let{scope:S,unwrapped:q}=Ce(r.value.$each,u,g);if(S&&x.push(S),q){let H=Ae({$id:P.value,path:n,customMessages:t,rules:q,stateValue:u,index:g,options:p,storage:l,externalErrors:toRef(m?.value??{},"$each"),initialState:d?.[g],shortcuts:h,fieldName:$});return H||null}}}).filter(i=>!!i),s.filter(i=>!e.value.find(g=>i.$id===g.$id)).forEach((i,g)=>{l.deleteArrayStatus(P.value,g.toString());});}else f.value=[];}function w(){o=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():N();},{deep:ve?1:!0,flush:"pre"}),C=effectScope(),F=C.run(()=>{let s=computed(()=>c.value.$dirty&&f.value.every(R=>R.$dirty)),i=computed(()=>c.value.$anyDirty||f.value.some(R=>R.$dirty)),g=computed(()=>c.value.$invalid||f.value.some(R=>R.$invalid)),u=computed(()=>(L(c.value.$rules)?!0:c.value.$valid)&&f.value.every(R=>R.$valid)),S=computed(()=>c.value.$error||f.value.some(R=>R.$error)),q=computed(()=>!(g.value||H.value)),H=computed(()=>c.value.$pending||f.value.some(R=>R.$pending)),K=computed(()=>({$self:c.value.$errors,$each:f.value.map(R=>R.$errors)})),ie=computed(()=>({$self:c.value.$silentErrors,$each:f.value.map(R=>R.$silentErrors)})),ne=computed(()=>$);function y(){h?.collections&&Object.entries(h?.collections).forEach(([R,A])=>{let z=effectScope();T[R]=z.run(()=>{let te=ref();return watchEffect(()=>{te.value=A(reactive({$dirty:s,$error:S,$pending:H,$invalid:g,$valid:u,$errors:K,$ready:q,$silentErrors:ie,$anyDirty:i,$name:ne,$each:f,$field:c,$value:e}));}),te}),x.push(z);});}let T={};return y(),{$dirty:s,$anyDirty:i,$invalid:g,$valid:u,$error:S,$pending:H,$errors:K,$silentErrors:ie,$ready:q,$name:ne,$shortcuts:T}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function _(){o&&o(),c.value&&c.value.$unwatch(),f.value&&f.value.forEach(s=>{"$dirty"in s&&s.$unwatch();}),C.stop(),C=effectScope(),O.stop(),O=effectScope(!0),x.forEach(s=>s.stop()),x=[];}function E(s=!0,i=!1){c.value.$touch(s,i),f.value.forEach(g=>{g.$touch(s,i);});}function v(){c.value.$reset(),f.value.forEach(s=>{s.$reset();});}async function b(){let s=e.value;try{return {result:(await Promise.allSettled([c.value.$validate(),...f.value.map(u=>u.$validate())])).every(u=>u.status==="fulfilled"?u.value.result===!0:!1),data:s}}catch{return {result:!1,data:s}}}function k(){c.value.$clearExternalErrors(),f.value.forEach(s=>{s.$clearExternalErrors();});}function V(s=!0){let i=f.value.map(g=>{if(at(g))return g.$extractDirtyFields(s)});return s&&i.every(g=>L(g))&&(i=[]),i}function Y(){_(),e.value=U(d),v();}let{$shortcuts:D,...I}=F;return reactive({$field:c,...I,...D,$each:f,$value:e,$validate:b,$unwatch:_,$watch:w,$touch:E,$reset:v,$resetAll:Y,$extractDirtyFields:V,$clearExternalErrors:k})}function Me({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:p,initialState:m,fieldName:d,...h}){let $=effectScope(),C,F=[],O=null,a=null,x=null;async function M(D=!0){let I=Object.entries(e.value),s=Object.fromEntries(I.filter(([u,S])=>!!S).map(([u,S])=>{if(S){let q=toRef(r.value,u),H=toRef(()=>S),K=toRef(l?.value??{},u);return [u,pe({state:q,rulesDef:H,path:t?`${t}.${u}`:u,externalErrors:K,initialState:m?.[u],fieldName:u,...h})]}return []})),i=Object.fromEntries(Object.entries(unref(l)??{}).filter(([u,S])=>!(u in e.value)&&!!S).map(([u])=>{let S=toRef(r.value,u);return [u,pe({state:S,rulesDef:computed(()=>({})),path:t?`${t}.${u}`:u,externalErrors:toRef(l?.value??{},u),initialState:m?.[u],fieldName:u,...h})]})),g=Object.fromEntries(Object.entries(r.value).filter(([u])=>!(u in e.value)&&!(u in(i.value??{}))).map(([u])=>{let S=toRef(r.value,u);return [u,pe({state:S,rulesDef:computed(()=>({})),path:t?`${t}.${u}`:u,externalErrors:toRef(l?.value??{},u),initialState:m?.[u],fieldName:u,...h})]}));o.value={...s,...i,...g},D&&N();}let o=h.storage.getFieldsEntry(t);M();function c(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),j();}function f(D=!0,I=!1){Object.values(o.value).forEach(s=>{s.$touch(D,I);});}function j(){l?.value&&(a=watch(l,()=>{w(),M();},{deep:!0}));}function N(){n&&(O=watch(n,()=>{w(),M();},{deep:!0,flush:"post"}),j()),x=watch(r,()=>{w(),M(),f(!0,!0);},{flush:"sync"}),$=effectScope(),C=$.run(()=>{let D=computed({get:()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([T,R])=>R?.$dirty),set(){}}),I=computed({get:()=>Object.entries(o.value).some(([T,R])=>R?.$dirty),set(){}}),s=computed({get:()=>Object.entries(o.value).some(([T,R])=>R?.$invalid),set(){}}),i=computed({get:()=>Object.entries(o.value).every(([T,R])=>R?.$valid),set(){}}),g=computed({get:()=>I.value&&!S.value&&s.value,set(){}}),u=computed({get:()=>unref(h.options.autoDirty)?I.value&&!(s.value||S.value):!(s.value||S.value),set(){}}),S=computed({get:()=>Object.entries(o.value).some(([T,R])=>R?.$pending),set(){}}),q=computed({get:()=>Object.fromEntries(Object.entries(o.value).map(([T,R])=>[T,R?.$errors])),set(){}}),H=computed({get:()=>Object.fromEntries(Object.entries(o.value).map(([T,R])=>[T,R?.$silentErrors])),set(){}}),K=computed({get:()=>d,set(){}});function ie(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([T,R])=>{let A=effectScope();y[T]=A.run(()=>{let z=ref();return watchEffect(()=>{z.value=R(reactive({$dirty:D,$value:r,$error:g,$pending:S,$invalid:s,$valid:i,$ready:u,$anyDirty:I,$name:K,$silentErrors:H,$errors:q,$fields:o}));}),z}),F.push(A);});}let ne=computed({get:()=>p?Object.fromEntries(Object.entries(p?.(o.value)??{}).map(([T,R])=>R.length?[T,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(A=>[A,Qe(R,A)])),...Object.fromEntries(["$errors","$silentErrors"].map(A=>[A,Xe(R,A)]))}]:[])):{},set(){}}),y={};return ie(),{$dirty:D,$anyDirty:I,$invalid:s,$valid:i,$error:g,$pending:S,$errors:q,$silentErrors:H,$ready:u,$name:K,$shortcuts:y,$groups:ne}});}function w(){O?.(),a?.(),x?.(),F.forEach(D=>D.stop()),F=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,I])=>{I.$unwatch();});}function _(){Object.entries(o.value).forEach(([D,I])=>{I.$clearExternalErrors();});}async function E(){w(),r.value=U({...m??{}}),c(),M();}function v(D){return D.filter(([I,s])=>X(s)?!(s&&typeof s=="object"&&"_null"in s)&&!L(s):Array.isArray(s)?s.length:!0)}function b(D=!0){let I=Object.entries(o.value).map(([s,i])=>[s,i.$extractDirtyFields(D)]);return D&&(I=v(I)),Object.fromEntries(I)}async function k(){try{let D=r.value;return {result:(await Promise.allSettled(Object.values(o.value).map(i=>i.$validate()))).every(i=>i.status==="fulfilled"?i.value.result===!0:!1),data:D}}catch{return {result:!1,data:r.value}}}let{$shortcuts:V,...Y}=C;return reactive({...Y,...V,$fields:o,$value:r,$resetAll:E,$reset:c,$touch:f,$validate:k,$unwatch:w,$watch:N,$clearExternalErrors:_,$extractDirtyFields:b})}function pe({rulesDef:e,externalErrors:r,...t}){return rt(e,t.state)?ct({rulesDef:e,externalErrors:r,...t}):tt(t.state,e)&&et(t.state)?Me({rulesDef:e,externalErrors:r,...t}):nt(e)?Se({rulesDef:e,externalErrors:r,...t}):null}function _e({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:p}){let m=Ie(),d=ref();return d.value=Me({rootRules:t,rulesDef:t,state:n,customMessages:l?.(),storage:m,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:p,fieldName:"root",path:""}),onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function Ve(e,r,t){let n={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function l(p,m,d){let h=isRef(m)?m:computed(typeof m=="function"?m:()=>m),$={...n,...d},C=isRef(p)?p:ref(p),F={...U(C.value)};return {r$:_e({scopeRules:h,state:C,options:$,initialState:F,customRules:e,shortcuts:t}).regle}}return l}var dt=Ve();function Ge(){function e(r,t){return t}return e}var Ne=Ge();function mt({rules:e,modifiers:r,shortcuts:t}){let n=Ve(e,r,t),l=Ge();return {useRegle:n,inferRules:l}}
2
- export{Ee as InternalRuleType,xe as createRule,mt as defineRegleConfig,Ne as inferRules,W as unwrapRuleParameters,dt as useRegle};
1
+ import {toValue,version,computed,isRef,toRef,ref,onScopeDispose,reactive,shallowRef,effectScope,unref,watch,watchEffect}from'vue';var xe=(t=>(t.Inline="__inline",t.Async="__async",t))(xe||{});function Ke(e,r){return e.some(t=>t[r])}function et(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 tt(e){return e.map(r=>r instanceof Function?computed(r):isRef(r)?r:toRef(()=>r))}function rt(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 Ce(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(x=>($=x,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:tt(r)}}function Ie(e){if(typeof e.validator=="function"){let t=Ce(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(rt(e.validator)>1){let l=function(...R){return Ce(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 Z(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function nt(e){return e.value instanceof Date||e.value instanceof File?!1:Z(e.value)}function L(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(n=>L(n)))),t=="Map"&&(r=new Map([...e].map(n=>[L(n[0]),L(n[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,xt(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let n in e)r[n]=L(e[n]);}return r}function xt(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 Pe(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 It(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 ge=It(version,"3.5.0")!==-1;function Pt(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Pt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}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 s=r.value.get(u);if(s)return s;{let c=ref({});return r.value.set(u,c),c}}function d(u){let s=t.value.get(u);if(s)return s;{let c=ref([]);return t.value.set(u,c),c}}function S(u,s,c){R.value.set(`${u}-${s}`,c);}function $(u,s){return R.value.get(`${u}-${s}`)}function x(u,s){u&&s!=null&&R.value.delete(`${u}-${s}`);}function F(u,s){n.value.set(u,s);}function O(u){return n.value.get(u)??!1}function a(u,s){e.value.set(u,s);}function E(u,s){let c=e.value.get(u);return c?C(s,c)?{valid:!0}:{valid:!1}:void 0}function C(u,s){let c=Object.keys(s),j=Object.keys(u);return j.length!==c.length||!j.every(_=>c.includes(_))?!1:j.every(_=>{let P=u[_],b=s[_];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 s=l.value.get(u);if(s)return s;{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 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:x,arrayStatusStorage:R}}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}function at(e,r){return Z(e.value)&&Z(r.value)&&!Object.entries(r.value).some(t=>ce(t))}function lt(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function ot(e){return !!e.value&&Z(e.value)}function ce(e){return Z(e)&&"_validator"in e}function fe(e){return typeof e.value!="function"}function ut(e){return Z(e)&&"$fields"in e}function Oe({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 st({fieldProperties:e,customMessages:r,rule:t,ruleKey:n,state:l,path:R,storage:y,$debounce:d,modifiers:S}){let $=effectScope(),x={},F,O=ref(!1),{$pending:a,$valid:E,$metadata:C,$validating:M}=y.trySetRuleStatusRef(`${R}.${n}`);function u(){$=effectScope(),x=$.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:D.value,...C.value})),W=computed(()=>fe(t)?typeof t.value.active=="function"?t.value.active(b.value):!!t.value.active:!0);function m(o){let i="",g=r?r[n]?.[o]:void 0;if(g&&(typeof g=="function"?i=g(b.value):i=g),fe(t)){let f=`_${o}_patched`;g&&!t.value[f]||(typeof t.value[o]=="function"?i=t.value[o](b.value):i=t.value[o]??"");}return i}let I=computed(()=>{let o=m("message");return z(o)&&(o="This field is not valid"),o}),V=computed(()=>m("tooltip")),Q=computed(()=>fe(t)&&t.value.type?t.value.type:n),K=computed(()=>fe(t)?t.value.validator:t.value),D=computed(()=>typeof t.value=="function"?[]:B(t.value._params??[])),w=computed(()=>`${R}.${Q.value}`);return {$active:W,$message:I,$type:Q,$validator:K,$params:D,$path:w,$tooltip:V}}),F=watch(x?.$params,()=>{(S.$autoDirty.value||S.$rewardEarly.value&&e.$error.value)&&k();});}u();function s(){E.value=!0,e.$dirty.value&&(a.value=!0);}async function c(){let b=!1;try{let W=x.$validator.value,m=W(l.value,...x.$params.value),I=l.value;s();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(ce(t.value)&&t.value._async)b=await j();else {let W=x.$validator.value,m=W(l.value,...x.$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({...x,$pending:a,$valid:E,$metadata:C,$haveAsync:O,$validating:M,$validate:k,$unwatch:P,$watch:u,$reset:_})}function be({state:e,rulesDef:r,customMessages:t,path:n,fieldName:l,storage:R,options:y,externalErrors:d,onUnwatch:S,$isArray:$,initialState:x,shortcuts:F}){let O=effectScope(),a,E=[],C,M,u,s,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,st({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?$e(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?.(),s?.();}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)),me=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)),He=computed({get:()=>e.value,set(q){C(),e.value=q,b();}}),Ee=computed(()=>ve.value&&!ye.value&&v.value),Le=computed(()=>Ee.value?Oe({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value}}):[]),qe=computed(()=>it({field:{$rules:m.value}})),ze=computed(()=>Oe({field:{$dirty:v.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),Je=computed(()=>!(ve.value||ye.value)),ye=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:v.value&&!z(e.value)&&!Be.value?Object.values(m.value).every(q=>q.$valid&&q.$active):!1),gt=computed(()=>Object.entries(m.value).some(([q,te])=>te.$haveAsync));function St(){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:He,$rules:m,$error:Ee,$pending:ye,$invalid:ve,$valid:De,$errors:Le,$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:Ee,$pending:ye,$invalid:ve,$valid:De,$debounce:p,$lazy:N,$errors:Le,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:Ue,$clearExternalErrorsOnChange:me,$anyDirty:h,$name:Ye,$haveAnyAsyncRule:gt,$shortcuts:Qe,$validating:Be,$tooltips:qe,$dirty:v,triggerPunishment:A,processShortcuts:St,$silentValue:He}}),b(),u=watch(a.$dirty,()=>{R.setDirtyEntry(n,a.$dirty.value);}),M=watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),s=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:ge?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 D(){_(),e.value=L(x),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:i,$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,...i,$reset:V,$touch:Q,$validate:K,$unwatch:_,$watch:P,$resetAll:D,$extractDirtyFields:w,$clearExternalErrors:o})}function Me({$id:e,path:r,index:t,options:n,storage:l,stateValue:R,customMessages:y,rules:d,externalErrors:S,initialState:$,shortcuts:x,fieldName:F}){let O=d.$key?d.$key:Se(),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=de({state:R,rulesDef:toRef(()=>d),customMessages:y,path:a,storage:l,options:n,externalErrors:toRef(S?.value??[],t),initialState:$?.[t],shortcuts:x,fieldName:F});if(E){let C=R.value?.$id;E.$id=C??String(O),l.addArrayStatus(e,E.$id,E);}return E}function pt({state:e,rulesDef:r,customMessages:t,path:n,storage:l,options:R,externalErrors:y,initialState:d,shortcuts:S,fieldName:$}){let x=effectScope(),F,O=effectScope(),a,E=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let C=ref(),M=ref(e.value),u,s=ref({}),c=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(i=>typeof i!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(i=>ce(i)):!1)})),j(),P();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Se(),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=s.value.$value,Array.isArray(e.value)?c.value=e.value.map((o,i)=>{let{scope:g,unwrapped:f}=Pe(r.value.$each,toRef(()=>o),i);g&&E.push(g);let T=Me({$id:C.value,path:n,customMessages:t,rules:f??{},stateValue:toRef(()=>o),index:i,options:R,storage:l,externalErrors:toRef(y?.value??{},"$each"),initialState:d?.[i],shortcuts:S,fieldName:$});return T||null}).filter(o=>!!o):c.value=[],s.value=be({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=L(c.value);c.value=e.value.map((i,g)=>{let f=toRef(()=>i);if(i.$id&&c.value.find(T=>T.$id===i.$id)){let T=l.getArrayStatus(C.value,i.$id);return T?(T.$value=f,T):null}else {let{scope:T,unwrapped:U}=Pe(r.value.$each,f,g);if(T&&E.push(T),U){let Y=Me({$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(i=>!!i),o.filter(i=>!e.value.find(g=>i.$id===g.$id)).forEach((i,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:ge?1:!0,flush:"pre"});}function P(){_(),x=effectScope(),F=x.run(()=>{let o=computed({get:()=>e.value,set(p){u(),e.value=p,_();}}),i=computed(()=>s.value.$dirty&&c.value.every(p=>p.$dirty)),g=computed(()=>s.value.$anyDirty||c.value.some(p=>p.$dirty)),f=computed(()=>s.value.$invalid||c.value.some(p=>p.$invalid)),T=computed(()=>(z(s.value.$rules)?!0:s.value.$valid)&&c.value.every(p=>p.$valid)),U=computed(()=>s.value.$error||c.value.some(p=>p.$error)),Y=computed(()=>!(f.value||ee.value)),ee=computed(()=>s.value.$pending||c.value.some(p=>p.$pending)),ae=computed(()=>({$self:s.value.$errors,$each:c.value.map(p=>p.$errors)})),le=computed(()=>({$self:s.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 me=ref();return watchEffect(()=>{me.value=N(reactive({$dirty:i,$error:U,$silentValue:o,$pending:ee,$invalid:f,$valid:T,$errors:ae,$ready:Y,$silentErrors:le,$anyDirty:g,$name:v,$each:c,$field:s,$value:e}));}),me}),E.push(X);});}let h={};return A(),{$dirty:i,$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(),s.value&&s.value.$unwatch(),c.value&&c.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),x.stop(),x=effectScope(),O.stop(),O=effectScope(!0),E.forEach(o=>o.stop()),E=[];}function W(o=!0,i=!1){s.value.$touch(o,i),c.value.forEach(g=>{g.$touch(o,i);});}function m(){s.value.$reset(),c.value.forEach(o=>{o.$reset();});}async function I(){let o=e.value;try{return {result:(await Promise.allSettled([s.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(){s.value.$clearExternalErrors(),c.value.forEach(o=>{o.$clearExternalErrors();});}function Q(o=!0){let i=c.value.map(g=>{if(ut(g))return g.$extractDirtyFields(o)});return o&&i.every(g=>z(g))&&(i=[]),i}function K(){b(),e.value=L(d),m();}let{$shortcuts:D,...w}=F;return reactive({$field:s,...w,...D,$each:c,$value:e,$validate:I,$unwatch:b,$watch:P,$touch:W,$reset:m,$resetAll:K,$extractDirtyFields:Q,$clearExternalErrors:V})}function Ve({rulesDef:e,state:r,path:t="",rootRules:n,externalErrors:l,validationGroups:R,initialState:y,fieldName:d,...S}){let $=effectScope(),x,F=[],O=null,a=null,E=null;async function M(D=!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,de({state:U,rulesDef:Y,path:t?`${t}.${f}`:f,externalErrors:ee,initialState:y?.[f],fieldName:f,...S})]}return []})),i=Object.fromEntries(Object.entries(unref(l)??{}).filter(([f,T])=>!(f in e.value)&&!!T).map(([f])=>{let T=toRef(r.value,f);return [f,de({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(i.value??{}))).map(([f])=>{let T=toRef(r.value,f);return [f,de({state:T,rulesDef:computed(()=>({})),path:t?`${t}.${f}`:f,externalErrors:toRef(l?.value??{},f),initialState:y?.[f],fieldName:f,...S})]}));u.value={...o,...i,...g},D&&_();}let u=S.storage.getFieldsEntry(t);M();function s(){a?.(),Object.values(u.value).forEach(D=>{D.$reset();}),j();}function c(D=!0,w=!1){Object.values(u.value).forEach(o=>{o.$touch(D,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(),x=$.run(()=>{let D=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(){}}),i=computed({get:()=>Object.entries(u.value).some(([h,p])=>p?.$invalid),set(){}}),g=computed({get:()=>Object.entries(u.value).every(([h,p])=>p?.$valid),set(){}}),f=computed({get:()=>o.value&&!U.value&&i.value,set(){}}),T=computed({get:()=>unref(S.options.autoDirty)?o.value&&!(i.value||U.value):!(i.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:D,$error:f,$pending:U,$invalid:i,$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,Ke(p,N)])),...Object.fromEntries(["$errors","$silentErrors"].map(N=>[N,et(p,N)]))}]:[])):{},set(){}}),A={};return le(),{$dirty:w,$anyDirty:o,$invalid:i,$valid:g,$error:f,$pending:U,$errors:Y,$silentErrors:ee,$ready:T,$name:ae,$shortcuts:A,$groups:v,$silentValue:D}});}function P(){O?.(),a?.(),E?.(),F.forEach(D=>D.stop()),F=[],$.stop(),u.value&&Object.entries(u.value).forEach(([D,w])=>{w.$unwatch();});}function b(){Object.entries(u.value).forEach(([D,w])=>{w.$clearExternalErrors();});}async function W(){P(),r.value=L({...y??{}}),s(),M();}function m(D){return D.filter(([w,o])=>Z(o)?!(o&&typeof o=="object"&&"_null"in o)&&!z(o):Array.isArray(o)?o.length:!0)}function I(D=!0){let w=Object.entries(u.value).map(([o,i])=>[o,i.$extractDirtyFields(D)]);return D&&(w=m(w)),Object.fromEntries(w)}async function V(){try{let D=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(i=>i.$validate()))).every(i=>i.status==="fulfilled"?i.value.result===!0:!1),data:D}}catch{return {result:!1,data:r.value}}}let{$shortcuts:Q,...K}=x;return reactive({...K,...Q,$fields:u,$value:r,$resetAll:W,$reset:s,$touch:c,$validate:V,$unwatch:P,$watch:_,$clearExternalErrors:b,$extractDirtyFields:I})}function de({rulesDef:e,externalErrors:r,...t}){return lt(e,t.state)?pt({rulesDef:e,externalErrors:r,...t}):at(t.state,e)&&nt(t.state)?Ve({rulesDef:e,externalErrors:r,...t}):ot(e)?be({rulesDef:e,externalErrors:r,...t}):null}function Ge({initialState:e,options:r,scopeRules:t,state:n,customRules:l,shortcuts:R}){let y=we(),d=ref();return d.value=Ve({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:""}),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},x=isRef(R)?R:ref(R),F={...L(x.value)};return {r$:Ge({scopeRules:S,state:x,options:$,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{xe as InternalRuleType,Ie as createRule,$t as defineRegleConfig,We as inferRules,B as unwrapRuleParameters,vt as useRegle};
@@ -155,9 +155,15 @@ function createRule(definition) {
155
155
  throw new Error("Validator must be a function");
156
156
  }
157
157
  function isObject(obj) {
158
+ if (obj instanceof Date || obj instanceof File) {
159
+ return false;
160
+ }
158
161
  return typeof obj === "object" && obj !== null && !Array.isArray(obj);
159
162
  }
160
163
  function isRefObject(obj) {
164
+ if (obj.value instanceof Date || obj.value instanceof File) {
165
+ return false;
166
+ }
161
167
  return isObject(obj.value);
162
168
  }
163
169
  function cloneDeep(obj) {
@@ -790,6 +796,14 @@ function createReactiveFieldStatus({
790
796
  return ruleResult.$validating;
791
797
  });
792
798
  });
799
+ const $silentValue = computed({
800
+ get: () => state.value,
801
+ set(value) {
802
+ $unwatchState();
803
+ state.value = value;
804
+ define$watchState();
805
+ }
806
+ });
793
807
  const $error = computed(() => {
794
808
  return $invalid.value && !$pending.value && $dirty.value;
795
809
  });
@@ -875,6 +889,7 @@ function createReactiveFieldStatus({
875
889
  $dirty,
876
890
  $externalErrors: externalErrors?.value ?? [],
877
891
  $value: state,
892
+ $silentValue,
878
893
  $rules,
879
894
  $error,
880
895
  $pending,
@@ -922,9 +937,22 @@ function createReactiveFieldStatus({
922
937
  $tooltips,
923
938
  $dirty,
924
939
  triggerPunishment,
925
- processShortcuts
940
+ processShortcuts,
941
+ $silentValue
926
942
  };
927
943
  });
944
+ define$watchState();
945
+ $unwatchDirty = watch(scopeState.$dirty, () => {
946
+ storage.setDirtyEntry(path, scopeState.$dirty.value);
947
+ });
948
+ $unwatchValid = watch(scopeState.$valid, (valid) => {
949
+ if (scopeState.$rewardEarly.value && valid) {
950
+ scopeState.triggerPunishment.value = false;
951
+ }
952
+ });
953
+ $unwatchAsync = watch(scopeState.$haveAnyAsyncRule, define$commit);
954
+ }
955
+ function define$watchState() {
928
956
  $unwatchState = watch(
929
957
  state,
930
958
  () => {
@@ -945,15 +973,6 @@ function createReactiveFieldStatus({
945
973
  },
946
974
  { deep: $isArray ? true : isVueSuperiorOrEqualTo3dotFive ? 1 : true }
947
975
  );
948
- $unwatchDirty = watch(scopeState.$dirty, () => {
949
- storage.setDirtyEntry(path, scopeState.$dirty.value);
950
- });
951
- $unwatchValid = watch(scopeState.$valid, (valid) => {
952
- if (scopeState.$rewardEarly.value && valid) {
953
- scopeState.triggerPunishment.value = false;
954
- }
955
- });
956
- $unwatchAsync = watch(scopeState.$haveAnyAsyncRule, define$commit);
957
976
  }
958
977
  function $commitHandler() {
959
978
  Object.values($rules.value).forEach((rule) => {
@@ -1269,7 +1288,7 @@ function createReactiveCollectionStatus({
1269
1288
  $eachStatus.value = [];
1270
1289
  }
1271
1290
  }
1272
- function $watch() {
1291
+ function define$watchState() {
1273
1292
  $unwatchState = watch(
1274
1293
  state,
1275
1294
  () => {
@@ -1281,8 +1300,19 @@ function createReactiveCollectionStatus({
1281
1300
  },
1282
1301
  { deep: isVueSuperiorOrEqualTo3dotFive ? 1 : true, flush: "pre" }
1283
1302
  );
1303
+ }
1304
+ function $watch() {
1305
+ define$watchState();
1284
1306
  scope = effectScope();
1285
1307
  scopeState = scope.run(() => {
1308
+ const $silentValue = computed({
1309
+ get: () => state.value,
1310
+ set(value) {
1311
+ $unwatchState();
1312
+ state.value = value;
1313
+ define$watchState();
1314
+ }
1315
+ });
1286
1316
  const $dirty = computed(() => {
1287
1317
  return $fieldStatus.value.$dirty && $eachStatus.value.every((statusOrField) => {
1288
1318
  return statusOrField.$dirty;
@@ -1340,6 +1370,7 @@ function createReactiveCollectionStatus({
1340
1370
  reactive({
1341
1371
  $dirty,
1342
1372
  $error,
1373
+ $silentValue,
1343
1374
  $pending,
1344
1375
  $invalid,
1345
1376
  $valid,
@@ -1373,7 +1404,8 @@ function createReactiveCollectionStatus({
1373
1404
  $silentErrors,
1374
1405
  $ready,
1375
1406
  $name,
1376
- $shortcuts: $shortcuts2
1407
+ $shortcuts: $shortcuts2,
1408
+ $silentValue
1377
1409
  };
1378
1410
  });
1379
1411
  if (immediateScopeState.isPrimitiveArray.value) {
@@ -1592,8 +1624,20 @@ function createReactiveNestedStatus({
1592
1624
  );
1593
1625
  }
1594
1626
  }
1627
+ function define$watchState() {
1628
+ $unwatchState = watch(
1629
+ state,
1630
+ () => {
1631
+ $unwatch();
1632
+ createReactiveFieldsStatus();
1633
+ $touch(true, true);
1634
+ },
1635
+ { flush: "sync" }
1636
+ );
1637
+ }
1595
1638
  function $watch() {
1596
1639
  if (rootRules) {
1640
+ $unwatchRules?.();
1597
1641
  $unwatchRules = watch(
1598
1642
  rootRules,
1599
1643
  () => {
@@ -1604,17 +1648,17 @@ function createReactiveNestedStatus({
1604
1648
  );
1605
1649
  define$WatchExternalErrors();
1606
1650
  }
1607
- $unwatchState = watch(
1608
- state,
1609
- () => {
1610
- $unwatch();
1611
- createReactiveFieldsStatus();
1612
- $touch(true, true);
1613
- },
1614
- { flush: "sync" }
1615
- );
1651
+ define$watchState();
1616
1652
  scope = effectScope();
1617
1653
  scopeState = scope.run(() => {
1654
+ const $silentValue = computed({
1655
+ get: () => state.value,
1656
+ set(value) {
1657
+ $unwatch();
1658
+ state.value = value;
1659
+ createReactiveFieldsStatus();
1660
+ }
1661
+ });
1618
1662
  const $dirty = computed({
1619
1663
  get: () => {
1620
1664
  return !!Object.entries($fields.value).length && Object.entries($fields.value).every(([key, statusOrField]) => {
@@ -1715,6 +1759,7 @@ function createReactiveNestedStatus({
1715
1759
  reactive({
1716
1760
  $dirty,
1717
1761
  $value: state,
1762
+ $silentValue,
1718
1763
  $error,
1719
1764
  $pending,
1720
1765
  $invalid,
@@ -1781,7 +1826,8 @@ function createReactiveNestedStatus({
1781
1826
  $ready,
1782
1827
  $name,
1783
1828
  $shortcuts: $shortcuts2,
1784
- $groups
1829
+ $groups,
1830
+ $silentValue
1785
1831
  };
1786
1832
  });
1787
1833
  }
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.4.8",
3
+ "version": "0.5.0",
4
4
  "description": "Typescript-first model-based 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
- "@types/node": "22.9.3",
11
- "@typescript-eslint/eslint-plugin": "8.18.0",
12
- "@typescript-eslint/parser": "8.18.0",
10
+ "@types/node": "22.10.2",
11
+ "@typescript-eslint/eslint-plugin": "8.18.1",
12
+ "@typescript-eslint/parser": "8.18.1",
13
13
  "@vue/test-utils": "2.4.6",
14
- "bumpp": "9.9.0",
14
+ "bumpp": "9.9.2",
15
15
  "changelogithub": "0.13.11",
16
16
  "cross-env": "7.0.3",
17
17
  "eslint": "9.15.0",
@@ -19,7 +19,7 @@
19
19
  "eslint-plugin-vue": "9.31.0",
20
20
  "prettier": "3.3.3",
21
21
  "tsup": "8.3.5",
22
- "type-fest": "4.30.0",
22
+ "type-fest": "4.30.2",
23
23
  "typescript": "5.6.3",
24
24
  "vitest": "2.1.8",
25
25
  "vue": "3.5.13",