@regle/core 0.7.4-beta.1 β†’ 0.7.4-beta.3

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
@@ -22,9 +22,7 @@ It's heavily inspired by Vuelidate.
22
22
  ## 🧰 Features
23
23
  - βœ… 100% type inference
24
24
  - πŸ“– Model based validation
25
- - πŸ’€ Headless
26
25
  - πŸͺ— Extensible
27
26
  - πŸ›’ Collection validation
28
27
  - πŸ¦Έβ€β™‚οΈ [Zod](https://zod.dev/) support
29
28
  - πŸ€– [Valibot](https://valibot.dev/) support
30
- - πŸͺΆ Light(~7kb gzip) and 0 dependencies
@@ -65,7 +65,7 @@ function cloneDeep(obj) {
65
65
 
66
66
  // ../shared/utils/object.utils.ts
67
67
  function isObject(obj) {
68
- if (obj instanceof Date || obj instanceof File) {
68
+ if (obj && (obj instanceof Date || obj.constructor.name == "File" || obj.constructor.name == "FileList")) {
69
69
  return false;
70
70
  }
71
71
  return typeof obj === "object" && obj !== null && !Array.isArray(obj);
@@ -386,9 +386,6 @@ function useStorage() {
386
386
  };
387
387
  }
388
388
  function isRefObject(obj) {
389
- if (obj.value instanceof Date || obj.value instanceof File) {
390
- return false;
391
- }
392
389
  return isObject(obj.value);
393
390
  }
394
391
  function unwrapGetter(getter, value, index) {
@@ -2258,8 +2255,8 @@ function defineRegleConfig({
2258
2255
  const inferRules2 = createInferRuleHelper();
2259
2256
  return { useRegle: useRegle2, inferRules: inferRules2 };
2260
2257
  }
2261
- function mergeRegles(regles, _nested) {
2262
- const nested = _nested == null ? false : _nested;
2258
+ function mergeRegles(regles, _scoped) {
2259
+ const scoped = _scoped == null ? false : _scoped;
2263
2260
  const $value = vue.computed({
2264
2261
  get: () => Object.fromEntries(Object.entries(regles).map(([key, r]) => [key, r.$value])),
2265
2262
  set: (value) => {
@@ -2382,7 +2379,7 @@ function mergeRegles(regles, _nested) {
2382
2379
  }
2383
2380
  }
2384
2381
  return vue.reactive({
2385
- ...!nested && {
2382
+ ...!scoped && {
2386
2383
  $instances,
2387
2384
  $value,
2388
2385
  $silentValue,
@@ -2406,8 +2403,8 @@ function mergeRegles(regles, _nested) {
2406
2403
  $clearExternalErrors
2407
2404
  });
2408
2405
  }
2409
- function createUseCollectNestedValidations(instances) {
2410
- function useCollectNestedValidations() {
2406
+ function createUseCollectScopedValidations(instances) {
2407
+ function useCollectScopedValidations() {
2411
2408
  const r$ = vue.ref(mergeRegles(instances.value, true));
2412
2409
  const regle = vue.reactive({ r$ });
2413
2410
  vue.watch(instances, (newInstances) => {
@@ -2415,12 +2412,12 @@ function createUseCollectNestedValidations(instances) {
2415
2412
  });
2416
2413
  return { r$: regle.r$ };
2417
2414
  }
2418
- return { useCollectNestedValidations };
2415
+ return { useCollectScopedValidations };
2419
2416
  }
2420
- function createUseNestedRegleComposable(customUseRegle) {
2417
+ function createUseScopedRegleComposable(customUseRegle) {
2421
2418
  const scopedUseRegle = customUseRegle ?? useRegle;
2422
2419
  const instances = vue.ref({});
2423
- const useNestedRegle = (state, rulesFactory, options) => {
2420
+ const useScopedRegle = (state, rulesFactory, options) => {
2424
2421
  const $id = randomId();
2425
2422
  const { r$ } = scopedUseRegle(state, rulesFactory, options);
2426
2423
  instances.value[$id] = r$;
@@ -2432,22 +2429,22 @@ function createUseNestedRegleComposable(customUseRegle) {
2432
2429
  }
2433
2430
  return { r$, $dispose };
2434
2431
  };
2435
- return { useNestedRegle, instances };
2432
+ return { useScopedRegle, instances };
2436
2433
  }
2437
2434
 
2438
- // src/core/createNestedUseRegle/createNestedUseRegle.ts
2439
- function createNestedUseRegle(customUseRegle) {
2440
- const { instances, useNestedRegle } = createUseNestedRegleComposable(customUseRegle);
2441
- const { useCollectNestedValidations } = createUseCollectNestedValidations(instances);
2435
+ // src/core/createScopedUseRegle/createScopedUseRegle.ts
2436
+ function createScopedUseRegle(customUseRegle) {
2437
+ const { instances, useScopedRegle } = createUseScopedRegleComposable(customUseRegle);
2438
+ const { useCollectScopedValidations } = createUseCollectScopedValidations(instances);
2442
2439
  return {
2443
- useNestedRegle,
2444
- useCollectNestedValidations
2440
+ useScopedRegle,
2441
+ useCollectScopedValidations
2445
2442
  };
2446
2443
  }
2447
2444
 
2448
2445
  exports.InternalRuleType = InternalRuleType;
2449
- exports.createNestedUseRegle = createNestedUseRegle;
2450
2446
  exports.createRule = createRule;
2447
+ exports.createScopedUseRegle = createScopedUseRegle;
2451
2448
  exports.defineRegleConfig = defineRegleConfig;
2452
2449
  exports.inferRules = inferRules;
2453
2450
  exports.mergeRegles = mergeRegles;
@@ -1739,7 +1739,7 @@ type MergedRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TVal
1739
1739
  /** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
1740
1740
  $validate: () => Promise<MergedReglesResult<TRegles>>;
1741
1741
  };
1742
- type MergedNestedRegles<TValue extends Record<string, any> = Record<string, unknown>> = Omit<MergedRegles<Record<string, SuperCompatibleRegleRoot>, TValue>, '$instances' | '$errors' | '$silentErrors' | '$value' | '$silentValue'>;
1742
+ type MergedScopedRegles<TValue extends Record<string, any> = Record<string, unknown>> = Omit<MergedRegles<Record<string, SuperCompatibleRegleRoot>, TValue>, '$instances' | '$errors' | '$silentErrors' | '$value' | '$silentValue'>;
1743
1743
  type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>> = {
1744
1744
  result: false;
1745
1745
  data: {
@@ -1755,15 +1755,15 @@ type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>
1755
1755
  }>['data'];
1756
1756
  };
1757
1757
  };
1758
- declare function mergeRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TNested extends boolean = false>(regles: TRegles, _nested?: TNested): TNested extends false ? MergedRegles<TRegles> : MergedNestedRegles;
1758
+ declare function mergeRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TScoped extends boolean = false>(regles: TRegles, _scoped?: TScoped): TScoped extends false ? MergedRegles<TRegles> : MergedScopedRegles;
1759
1759
 
1760
- declare function createNestedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<AllRulesDeclarations>>, TReturnedRegle extends useRegleFn<any, any> = TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
1760
+ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<AllRulesDeclarations>>, TReturnedRegle extends useRegleFn<any, any> = TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
1761
1761
  $dispose: () => void;
1762
1762
  }> : useRegleFn<Partial<AllRulesDeclarations>>>(customUseRegle?: TCustomRegle): {
1763
- useNestedRegle: TReturnedRegle;
1764
- useCollectNestedValidations<TValue extends Record<string, any> = Record<string, unknown>>(): {
1765
- r$: MergedNestedRegles<TValue>;
1763
+ useScopedRegle: TReturnedRegle;
1764
+ useCollectScopedValidations<TValue extends Record<string, any> = Record<string, unknown>>(): {
1765
+ r$: MergedScopedRegles<TValue>;
1766
1766
  };
1767
1767
  };
1768
1768
 
1769
- export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createNestedUseRegle, createRule, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
1769
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
@@ -1739,7 +1739,7 @@ type MergedRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TVal
1739
1739
  /** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
1740
1740
  $validate: () => Promise<MergedReglesResult<TRegles>>;
1741
1741
  };
1742
- type MergedNestedRegles<TValue extends Record<string, any> = Record<string, unknown>> = Omit<MergedRegles<Record<string, SuperCompatibleRegleRoot>, TValue>, '$instances' | '$errors' | '$silentErrors' | '$value' | '$silentValue'>;
1742
+ type MergedScopedRegles<TValue extends Record<string, any> = Record<string, unknown>> = Omit<MergedRegles<Record<string, SuperCompatibleRegleRoot>, TValue>, '$instances' | '$errors' | '$silentErrors' | '$value' | '$silentValue'>;
1743
1743
  type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>> = {
1744
1744
  result: false;
1745
1745
  data: {
@@ -1755,15 +1755,15 @@ type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>
1755
1755
  }>['data'];
1756
1756
  };
1757
1757
  };
1758
- declare function mergeRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TNested extends boolean = false>(regles: TRegles, _nested?: TNested): TNested extends false ? MergedRegles<TRegles> : MergedNestedRegles;
1758
+ declare function mergeRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TScoped extends boolean = false>(regles: TRegles, _scoped?: TScoped): TScoped extends false ? MergedRegles<TRegles> : MergedScopedRegles;
1759
1759
 
1760
- declare function createNestedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<AllRulesDeclarations>>, TReturnedRegle extends useRegleFn<any, any> = TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
1760
+ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<AllRulesDeclarations>>, TReturnedRegle extends useRegleFn<any, any> = TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
1761
1761
  $dispose: () => void;
1762
1762
  }> : useRegleFn<Partial<AllRulesDeclarations>>>(customUseRegle?: TCustomRegle): {
1763
- useNestedRegle: TReturnedRegle;
1764
- useCollectNestedValidations<TValue extends Record<string, any> = Record<string, unknown>>(): {
1765
- r$: MergedNestedRegles<TValue>;
1763
+ useScopedRegle: TReturnedRegle;
1764
+ useCollectScopedValidations<TValue extends Record<string, any> = Record<string, unknown>>(): {
1765
+ r$: MergedScopedRegles<TValue>;
1766
1766
  };
1767
1767
  };
1768
1768
 
1769
- export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createNestedUseRegle, createRule, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
1769
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
@@ -1,2 +1,2 @@
1
- 'use strict';var vue=require('vue');function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e instanceof Date||e instanceof File?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function St(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),i=vue.shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=vue.ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=vue.ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=vue.ref(false),u=vue.ref(true),v=vue.ref({}),M=vue.ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return e.value instanceof Date||e.value instanceof File?false:ne(e.value)}function Je(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(vue.version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Dt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=vue.effectScope(),y={},b,B=vue.ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=vue.effectScope(),y=S.run(()=>{let o=vue.ref(false),s=vue.ref(false),I=vue.ref(true),V=vue.ref(false),G=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=vue.computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=vue.computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=vue.computed(()=>L("tooltip")),pe=vue.computed(()=>we(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>we(t)?t.value.validator:t.value),R=vue.computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=vue.computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=vue.watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I 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(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=vue.effectScope();}return vue.reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=vue.effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=vue.toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=vue.effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=vue.ref(false),_=vue.ref(false),W=vue.computed(()=>g.value),x=vue.computed(()=>L.value.$debounce),se=vue.computed(()=>L.value.$lazy!=null?L.value.$lazy:vue.unref(m.lazy)!=null?vue.unref(m.lazy):false),le=vue.computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:vue.unref(m.rewardEarly)!=null?vue.unref(m.rewardEarly):false),ge=vue.computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:vue.unref(m.clearExternalErrorsOnChange)!=null?vue.unref(m.clearExternalErrorsOnChange):true),U=vue.computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:vue.unref(m.autoDirty)!=null?vue.unref(m.autoDirty):!le.value),O=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=vue.computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=vue.computed(()=>ye.value&&!Pe.value&&g.value),ot=vue.computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=vue.computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=vue.computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),ut=vue.computed(()=>We.value),it=vue.computed(()=>Dt({field:{$rules:C.value}})),ct=vue.computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=vue.computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=vue.computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=vue.computed(()=>l),Me=vue.computed(()=>!!(Y(C.value)&&!y)),Rt=vue.computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=vue.effectScope();dt[ae]=pt.run(()=>{let mt=vue.ref();return vue.watchEffect(()=>{mt.value=ue(vue.reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return vue.watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=vue.watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=vue.watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=vue.watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=vue.watch(a.$haveAnyAsyncRule,s);}function G(){$=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=vue.ref({}),L=vue.ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return vue.reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=vue.toRef(S?.value??[],r),$=vue.computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:vue.toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=vue.effectScope(),N,w=vue.effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=vue.ref(),h=vue.ref(e.value),E,u=vue.ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,vue.toRef(()=>R),c);d&&j.push(d);let P=vue.toRef(y.value??[],c),X=vue.toRef(m?.value??{},"$each"),p=vue.computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:vue.toRef(m?.value??{},"$self"),schemaErrors:vue.computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=vue.toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=vue.toRef(m?.value??{},"$each"),A=vue.computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:vue.toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=vue.effectScope(),N=D.run(()=>{let R=vue.computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=vue.computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=vue.computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=vue.computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=vue.computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=vue.computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=vue.computed(()=>!(T.value||A.value)),A=vue.computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=vue.computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=vue.computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=vue.computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=vue.computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=vue.effectScope();W[x]=le.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=se(vue.reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=vue.effectScope(),w.stop(),w=vue.effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return vue.reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=vue.effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=vue.toRef(t.value??{},p),Z=vue.toRef(()=>A),z=vue.toRef(l?.value??{},p),oe=vue.computed(()=>i?.value?.[p]),g=vue.toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(vue.unref(i)??{}).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=vue.watch(l,()=>{s(),E();},{deep:true}));}function M(){$=vue.watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=vue.watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=vue.computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=vue.computed(()=>d.value&&!z.value&&T.value),p=vue.computed(()=>vue.unref(b.options.rewardEarly)!=null?vue.unref(b.options.rewardEarly):false),A=vue.computed(()=>vue.unref(b.options.autoDirty)!=null?vue.unref(b.options.autoDirty):!p.value),H=vue.computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=vue.ref(false),z=vue.computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=vue.computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let $e=vue.ref();return vue.watchEffect(()=>{$e.value=O(vue.reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return vue.reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let m=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),vue.watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=vue.ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{b.value?.$unwatch();}),vue.reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=vue.isRef(m)?m:vue.computed(typeof m=="function"?m:()=>m),y={...n,...f},b=vue.isRef(i)?i:vue.ref(i),B=vue.ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=vue.computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=vue.ref(je(e.value,true)),n=vue.reactive({r$:r});return vue.watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectNestedValidations:t}}function _t(e){let t=e??ke,r=vue.ref({});return {useNestedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,vue.onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useNestedRegle:r}=_t(e),{useCollectNestedValidations:n}=Ft(t);return {useNestedRegle:r,useCollectNestedValidations:n}}
2
- exports.InternalRuleType=He;exports.createNestedUseRegle=lt;exports.createRule=qe;exports.defineRegleConfig=Vt;exports.inferRules=at;exports.mergeRegles=je;exports.unwrapRuleParameters=ee;exports.useRegle=ke;exports.useRootStorage=Ie;
1
+ 'use strict';var vue=require('vue');function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function St(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),i=vue.shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=vue.ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=vue.ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=vue.ref(false),u=vue.ref(true),v=vue.ref({}),M=vue.ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return ne(e.value)}function Je(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(vue.version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Dt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=vue.effectScope(),y={},b,B=vue.ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=vue.effectScope(),y=S.run(()=>{let o=vue.ref(false),s=vue.ref(false),I=vue.ref(true),V=vue.ref(false),G=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=vue.computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=vue.computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=vue.computed(()=>L("tooltip")),pe=vue.computed(()=>we(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>we(t)?t.value.validator:t.value),R=vue.computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=vue.computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=vue.watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I 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(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=vue.effectScope();}return vue.reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=vue.effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=vue.toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=vue.effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=vue.ref(false),_=vue.ref(false),W=vue.computed(()=>g.value),x=vue.computed(()=>L.value.$debounce),se=vue.computed(()=>L.value.$lazy!=null?L.value.$lazy:vue.unref(m.lazy)!=null?vue.unref(m.lazy):false),le=vue.computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:vue.unref(m.rewardEarly)!=null?vue.unref(m.rewardEarly):false),ge=vue.computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:vue.unref(m.clearExternalErrorsOnChange)!=null?vue.unref(m.clearExternalErrorsOnChange):true),U=vue.computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:vue.unref(m.autoDirty)!=null?vue.unref(m.autoDirty):!le.value),O=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=vue.computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=vue.computed(()=>ye.value&&!Pe.value&&g.value),ot=vue.computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=vue.computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=vue.computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),ut=vue.computed(()=>We.value),it=vue.computed(()=>Dt({field:{$rules:C.value}})),ct=vue.computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=vue.computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=vue.computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=vue.computed(()=>l),Me=vue.computed(()=>!!(Y(C.value)&&!y)),Rt=vue.computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=vue.effectScope();dt[ae]=pt.run(()=>{let mt=vue.ref();return vue.watchEffect(()=>{mt.value=ue(vue.reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return vue.watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=vue.watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=vue.watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=vue.watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=vue.watch(a.$haveAnyAsyncRule,s);}function G(){$=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=vue.ref({}),L=vue.ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return vue.reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=vue.toRef(S?.value??[],r),$=vue.computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:vue.toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=vue.effectScope(),N,w=vue.effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=vue.ref(),h=vue.ref(e.value),E,u=vue.ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,vue.toRef(()=>R),c);d&&j.push(d);let P=vue.toRef(y.value??[],c),X=vue.toRef(m?.value??{},"$each"),p=vue.computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:vue.toRef(m?.value??{},"$self"),schemaErrors:vue.computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=vue.toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=vue.toRef(m?.value??{},"$each"),A=vue.computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:vue.toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=vue.effectScope(),N=D.run(()=>{let R=vue.computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=vue.computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=vue.computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=vue.computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=vue.computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=vue.computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=vue.computed(()=>!(T.value||A.value)),A=vue.computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=vue.computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=vue.computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=vue.computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=vue.computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=vue.effectScope();W[x]=le.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=se(vue.reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=vue.effectScope(),w.stop(),w=vue.effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return vue.reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=vue.effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=vue.toRef(t.value??{},p),Z=vue.toRef(()=>A),z=vue.toRef(l?.value??{},p),oe=vue.computed(()=>i?.value?.[p]),g=vue.toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(vue.unref(i)??{}).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=vue.watch(l,()=>{s(),E();},{deep:true}));}function M(){$=vue.watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=vue.watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=vue.computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=vue.computed(()=>d.value&&!z.value&&T.value),p=vue.computed(()=>vue.unref(b.options.rewardEarly)!=null?vue.unref(b.options.rewardEarly):false),A=vue.computed(()=>vue.unref(b.options.autoDirty)!=null?vue.unref(b.options.autoDirty):!p.value),H=vue.computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=vue.ref(false),z=vue.computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=vue.computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let $e=vue.ref();return vue.watchEffect(()=>{$e.value=O(vue.reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return vue.reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let m=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),vue.watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=vue.ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{b.value?.$unwatch();}),vue.reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=vue.isRef(m)?m:vue.computed(typeof m=="function"?m:()=>m),y={...n,...f},b=vue.isRef(i)?i:vue.ref(i),B=vue.ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=vue.computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=vue.ref(je(e.value,true)),n=vue.reactive({r$:r});return vue.watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectScopedValidations:t}}function _t(e){let t=e??ke,r=vue.ref({});return {useScopedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,vue.onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useScopedRegle:r}=_t(e),{useCollectScopedValidations:n}=Ft(t);return {useScopedRegle:r,useCollectScopedValidations:n}}
2
+ exports.InternalRuleType=He;exports.createRule=qe;exports.createScopedUseRegle=lt;exports.defineRegleConfig=Vt;exports.inferRules=at;exports.mergeRegles=je;exports.unwrapRuleParameters=ee;exports.useRegle=ke;exports.useRootStorage=Ie;
@@ -1,2 +1,2 @@
1
- import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,isRef,toRef,unref,watch,watchEffect}from'vue';function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e instanceof Date||e instanceof File?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function St(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),i=shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=ref(false),u=ref(true),v=ref({}),M=ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return e.value instanceof Date||e.value instanceof File?false:ne(e.value)}function Je(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Dt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=effectScope(),y={},b,B=ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=effectScope(),y=S.run(()=>{let o=ref(false),s=ref(false),I=ref(true),V=ref(false),G=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=computed(()=>L("tooltip")),pe=computed(()=>we(t)&&t.value.type?t.value.type:r),me=computed(()=>we(t)?t.value.validator:t.value),R=computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I 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(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=effectScope();}return reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=ref(false),_=ref(false),W=computed(()=>g.value),x=computed(()=>L.value.$debounce),se=computed(()=>L.value.$lazy!=null?L.value.$lazy:unref(m.lazy)!=null?unref(m.lazy):false),le=computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:unref(m.rewardEarly)!=null?unref(m.rewardEarly):false),ge=computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:unref(m.clearExternalErrorsOnChange)!=null?unref(m.clearExternalErrorsOnChange):true),U=computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:unref(m.autoDirty)!=null?unref(m.autoDirty):!le.value),O=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=computed(()=>ye.value&&!Pe.value&&g.value),ot=computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),ut=computed(()=>We.value),it=computed(()=>Dt({field:{$rules:C.value}})),ct=computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=computed(()=>l),Me=computed(()=>!!(Y(C.value)&&!y)),Rt=computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=effectScope();dt[ae]=pt.run(()=>{let mt=ref();return watchEffect(()=>{mt.value=ue(reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=watch(a.$haveAnyAsyncRule,s);}function G(){$=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=ref({}),L=ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=toRef(S?.value??[],r),$=computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=effectScope(),N,w=effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),h=ref(e.value),E,u=ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,toRef(()=>R),c);d&&j.push(d);let P=toRef(y.value??[],c),X=toRef(m?.value??{},"$each"),p=computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:toRef(m?.value??{},"$self"),schemaErrors:computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=toRef(m?.value??{},"$each"),A=computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=effectScope(),N=D.run(()=>{let R=computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=computed(()=>!(T.value||A.value)),A=computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=effectScope();W[x]=le.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=se(reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=effectScope(),w.stop(),w=effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=toRef(t.value??{},p),Z=toRef(()=>A),z=toRef(l?.value??{},p),oe=computed(()=>i?.value?.[p]),g=toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(unref(i)??{}).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=watch(l,()=>{s(),E();},{deep:true}));}function M(){$=watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=computed(()=>d.value&&!z.value&&T.value),p=computed(()=>unref(b.options.rewardEarly)!=null?unref(b.options.rewardEarly):false),A=computed(()=>unref(b.options.autoDirty)!=null?unref(b.options.autoDirty):!p.value),H=computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=ref(false),z=computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=effectScope();ge[U]=K.run(()=>{let $e=ref();return watchEffect(()=>{$e.value=O(reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=effectScope().run(()=>{let m=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),getCurrentScope()&&onScopeDispose(()=>{b.value?.$unwatch();}),reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=isRef(m)?m:computed(typeof m=="function"?m:()=>m),y={...n,...f},b=isRef(i)?i:ref(i),B=ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=ref(je(e.value,true)),n=reactive({r$:r});return watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectNestedValidations:t}}function _t(e){let t=e??ke,r=ref({});return {useNestedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useNestedRegle:r}=_t(e),{useCollectNestedValidations:n}=Ft(t);return {useNestedRegle:r,useCollectNestedValidations:n}}
2
- export{He as InternalRuleType,lt as createNestedUseRegle,qe as createRule,Vt as defineRegleConfig,at as inferRules,je as mergeRegles,ee as unwrapRuleParameters,ke as useRegle,Ie as useRootStorage};
1
+ import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,isRef,toRef,unref,watch,watchEffect}from'vue';function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function St(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),i=shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=ref(false),u=ref(true),v=ref({}),M=ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return ne(e.value)}function Je(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Dt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=effectScope(),y={},b,B=ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=effectScope(),y=S.run(()=>{let o=ref(false),s=ref(false),I=ref(true),V=ref(false),G=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=computed(()=>L("tooltip")),pe=computed(()=>we(t)&&t.value.type?t.value.type:r),me=computed(()=>we(t)?t.value.validator:t.value),R=computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I 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(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=effectScope();}return reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=ref(false),_=ref(false),W=computed(()=>g.value),x=computed(()=>L.value.$debounce),se=computed(()=>L.value.$lazy!=null?L.value.$lazy:unref(m.lazy)!=null?unref(m.lazy):false),le=computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:unref(m.rewardEarly)!=null?unref(m.rewardEarly):false),ge=computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:unref(m.clearExternalErrorsOnChange)!=null?unref(m.clearExternalErrorsOnChange):true),U=computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:unref(m.autoDirty)!=null?unref(m.autoDirty):!le.value),O=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=computed(()=>ye.value&&!Pe.value&&g.value),ot=computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),ut=computed(()=>We.value),it=computed(()=>Dt({field:{$rules:C.value}})),ct=computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=computed(()=>l),Me=computed(()=>!!(Y(C.value)&&!y)),Rt=computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=effectScope();dt[ae]=pt.run(()=>{let mt=ref();return watchEffect(()=>{mt.value=ue(reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=watch(a.$haveAnyAsyncRule,s);}function G(){$=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=ref({}),L=ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=toRef(S?.value??[],r),$=computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=effectScope(),N,w=effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),h=ref(e.value),E,u=ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,toRef(()=>R),c);d&&j.push(d);let P=toRef(y.value??[],c),X=toRef(m?.value??{},"$each"),p=computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:toRef(m?.value??{},"$self"),schemaErrors:computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=toRef(m?.value??{},"$each"),A=computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=effectScope(),N=D.run(()=>{let R=computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=computed(()=>!(T.value||A.value)),A=computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=effectScope();W[x]=le.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=se(reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=effectScope(),w.stop(),w=effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=toRef(t.value??{},p),Z=toRef(()=>A),z=toRef(l?.value??{},p),oe=computed(()=>i?.value?.[p]),g=toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(unref(i)??{}).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=watch(l,()=>{s(),E();},{deep:true}));}function M(){$=watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=computed(()=>d.value&&!z.value&&T.value),p=computed(()=>unref(b.options.rewardEarly)!=null?unref(b.options.rewardEarly):false),A=computed(()=>unref(b.options.autoDirty)!=null?unref(b.options.autoDirty):!p.value),H=computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=ref(false),z=computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=effectScope();ge[U]=K.run(()=>{let $e=ref();return watchEffect(()=>{$e.value=O(reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=effectScope().run(()=>{let m=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),getCurrentScope()&&onScopeDispose(()=>{b.value?.$unwatch();}),reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=isRef(m)?m:computed(typeof m=="function"?m:()=>m),y={...n,...f},b=isRef(i)?i:ref(i),B=ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=ref(je(e.value,true)),n=reactive({r$:r});return watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectScopedValidations:t}}function _t(e){let t=e??ke,r=ref({});return {useScopedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useScopedRegle:r}=_t(e),{useCollectScopedValidations:n}=Ft(t);return {useScopedRegle:r,useCollectScopedValidations:n}}
2
+ export{He as InternalRuleType,qe as createRule,lt as createScopedUseRegle,Vt as defineRegleConfig,at as inferRules,je as mergeRegles,ee as unwrapRuleParameters,ke as useRegle,Ie as useRootStorage};
@@ -63,7 +63,7 @@ function cloneDeep(obj) {
63
63
 
64
64
  // ../shared/utils/object.utils.ts
65
65
  function isObject(obj) {
66
- if (obj instanceof Date || obj instanceof File) {
66
+ if (obj && (obj instanceof Date || obj.constructor.name == "File" || obj.constructor.name == "FileList")) {
67
67
  return false;
68
68
  }
69
69
  return typeof obj === "object" && obj !== null && !Array.isArray(obj);
@@ -384,9 +384,6 @@ function useStorage() {
384
384
  };
385
385
  }
386
386
  function isRefObject(obj) {
387
- if (obj.value instanceof Date || obj.value instanceof File) {
388
- return false;
389
- }
390
387
  return isObject(obj.value);
391
388
  }
392
389
  function unwrapGetter(getter, value, index) {
@@ -2256,8 +2253,8 @@ function defineRegleConfig({
2256
2253
  const inferRules2 = createInferRuleHelper();
2257
2254
  return { useRegle: useRegle2, inferRules: inferRules2 };
2258
2255
  }
2259
- function mergeRegles(regles, _nested) {
2260
- const nested = _nested == null ? false : _nested;
2256
+ function mergeRegles(regles, _scoped) {
2257
+ const scoped = _scoped == null ? false : _scoped;
2261
2258
  const $value = computed({
2262
2259
  get: () => Object.fromEntries(Object.entries(regles).map(([key, r]) => [key, r.$value])),
2263
2260
  set: (value) => {
@@ -2380,7 +2377,7 @@ function mergeRegles(regles, _nested) {
2380
2377
  }
2381
2378
  }
2382
2379
  return reactive({
2383
- ...!nested && {
2380
+ ...!scoped && {
2384
2381
  $instances,
2385
2382
  $value,
2386
2383
  $silentValue,
@@ -2404,8 +2401,8 @@ function mergeRegles(regles, _nested) {
2404
2401
  $clearExternalErrors
2405
2402
  });
2406
2403
  }
2407
- function createUseCollectNestedValidations(instances) {
2408
- function useCollectNestedValidations() {
2404
+ function createUseCollectScopedValidations(instances) {
2405
+ function useCollectScopedValidations() {
2409
2406
  const r$ = ref(mergeRegles(instances.value, true));
2410
2407
  const regle = reactive({ r$ });
2411
2408
  watch(instances, (newInstances) => {
@@ -2413,12 +2410,12 @@ function createUseCollectNestedValidations(instances) {
2413
2410
  });
2414
2411
  return { r$: regle.r$ };
2415
2412
  }
2416
- return { useCollectNestedValidations };
2413
+ return { useCollectScopedValidations };
2417
2414
  }
2418
- function createUseNestedRegleComposable(customUseRegle) {
2415
+ function createUseScopedRegleComposable(customUseRegle) {
2419
2416
  const scopedUseRegle = customUseRegle ?? useRegle;
2420
2417
  const instances = ref({});
2421
- const useNestedRegle = (state, rulesFactory, options) => {
2418
+ const useScopedRegle = (state, rulesFactory, options) => {
2422
2419
  const $id = randomId();
2423
2420
  const { r$ } = scopedUseRegle(state, rulesFactory, options);
2424
2421
  instances.value[$id] = r$;
@@ -2430,17 +2427,17 @@ function createUseNestedRegleComposable(customUseRegle) {
2430
2427
  }
2431
2428
  return { r$, $dispose };
2432
2429
  };
2433
- return { useNestedRegle, instances };
2430
+ return { useScopedRegle, instances };
2434
2431
  }
2435
2432
 
2436
- // src/core/createNestedUseRegle/createNestedUseRegle.ts
2437
- function createNestedUseRegle(customUseRegle) {
2438
- const { instances, useNestedRegle } = createUseNestedRegleComposable(customUseRegle);
2439
- const { useCollectNestedValidations } = createUseCollectNestedValidations(instances);
2433
+ // src/core/createScopedUseRegle/createScopedUseRegle.ts
2434
+ function createScopedUseRegle(customUseRegle) {
2435
+ const { instances, useScopedRegle } = createUseScopedRegleComposable(customUseRegle);
2436
+ const { useCollectScopedValidations } = createUseCollectScopedValidations(instances);
2440
2437
  return {
2441
- useNestedRegle,
2442
- useCollectNestedValidations
2438
+ useScopedRegle,
2439
+ useCollectScopedValidations
2443
2440
  };
2444
2441
  }
2445
2442
 
2446
- export { InternalRuleType, createNestedUseRegle, createRule, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
2443
+ export { InternalRuleType, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.7.4-beta.1",
3
+ "version": "0.7.4-beta.3",
4
4
  "description": "Type safe form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "vue": ">=3.3.0",