@regle/core 1.14.0 → 1.14.2

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.
@@ -115,6 +115,11 @@ interface inferRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarations>>
115
115
  * @see {@link https://reglejs.dev/core-concepts/#dynamic-rules-object Documentation}
116
116
  */
117
117
  declare const inferRules: inferRulesFn<Partial<ExtendedRulesDeclarations>>;
118
+ /**
119
+ * @internal
120
+ * This is the internal function that creates the root storage for the Regle instance.
121
+ * This allows shared logic between all `useRegle` like composables
122
+ */
118
123
  declare function useRootStorage({
119
124
  initialState,
120
125
  originalState,
@@ -141,9 +146,39 @@ declare function useRootStorage({
141
146
  regle: $InternalRegleStatusType | undefined;
142
147
  };
143
148
  /**
144
- * Converts a nested $errors object to a flat array of string errors
149
+ * Converts a nested `$errors` object to a flat array of error strings.
150
+ * Useful for displaying a complete list of form errors or counting total errors.
151
+ *
152
+ * With the `includePath` option, returns errors in Standard Schema Issue format
153
+ * including the path to each error field.
154
+ *
155
+ * @param errors - The `$errors` object from a Regle instance (e.g., `r$.$errors`)
156
+ * @param options - Configuration options
157
+ * @param options.includePath - If true, returns Standard Schema Issues with paths
158
+ * @returns Array of error strings, or Standard Schema Issues if `includePath` is true
159
+ *
160
+ * @example
161
+ * ```ts
162
+ * import { flatErrors, useRegle } from '@regle/core';
163
+ * import { required, email, minLength } from '@regle/rules';
164
+ *
165
+ * const { r$ } = useRegle(
166
+ * { name: '', email: 'invalid' },
167
+ * { name: { required, minLength: minLength(3) }, email: { email } }
168
+ * );
169
+ *
170
+ * await r$.$validate();
171
+ *
172
+ * // Get flat array of error messages
173
+ * const errors = flatErrors(r$.$errors);
174
+ * // ['This field is required', 'Value must be a valid email address']
145
175
  *
146
- * Can also flatten to an array containing the path of each error with the options.includePath
176
+ * // Get errors with paths (Standard Schema format)
177
+ * const issues = flatErrors(r$.$errors, { includePath: true });
178
+ * // [{ message: 'This field is required', path: ['name'] }, ...]
179
+ * ```
180
+ *
181
+ * @see {@link https://reglejs.dev/core-concepts/displaying-errors#display-flat-errors Documentation}
147
182
  */
148
183
  declare function flatErrors(errors: $InternalRegleErrors, options: {
149
184
  includePath: true;
@@ -305,12 +340,19 @@ interface LocalRegleBehaviourOptions<TState$1 extends Record<string, any>, TRule
305
340
  }
306
341
  type RegleValidationGroupEntry = RegleFieldStatus<any, any> | undefined;
307
342
  interface RegleValidationGroupOutput {
343
+ /** Indicates whether any field in the validation group is invalid. */
308
344
  $invalid: boolean;
345
+ /** Convenience flag to easily decide if an error message should be displayed. True when any field in the group is dirty, not pending, and invalid. */
309
346
  $error: boolean;
347
+ /** Indicates if any async rule in the validation group is currently running. */
310
348
  $pending: boolean;
349
+ /** Indicates whether any field in the validation group has been interacted with by the user. */
311
350
  $dirty: boolean;
351
+ /** Indicates whether all fields in the validation group pass validation and are dirty. */
312
352
  $correct: boolean;
353
+ /** Collection of all error messages from fields in the group where $dirty equals true. */
313
354
  $errors: string[];
355
+ /** Collection of all error messages from fields in the group, regardless of $dirty state. */
314
356
  $silentErrors: string[];
315
357
  }
316
358
  type FieldRegleBehaviourOptions = AddDollarToOptions<RegleBehaviourOptions> & {
@@ -1082,7 +1124,7 @@ interface RegleCommonStatus<TValue$1 = any, TRules$1 extends Record<string, any>
1082
1124
  * This is not the opposite of `$invalid`. Correct is meant to display UI validation report.
1083
1125
  *
1084
1126
  * This will be `true` only if:
1085
- * - The field have at least one active rule
1127
+ * - The field has at least one active rule
1086
1128
  * - Is dirty and not empty
1087
1129
  * - Passes validation
1088
1130
  */
@@ -1171,8 +1213,10 @@ type RegleRuleStatus<TValue$1 = any, TParams$1 extends any[] = any[], TMetadata$
1171
1213
  /** Returns the original rule validator function. */
1172
1214
  $validator: ((value: IsUnknown<TValue$1> extends true ? any : MaybeInput<TValue$1>, ...args: any[]) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>) & ((value: IsUnknown<TValue$1> extends true ? any : TValue$1, ...args: [TParams$1] extends [never[]] ? [] : [unknown[]] extends [TParams$1] ? any[] : TParams$1) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>);
1173
1215
  } & ([TParams$1] extends [never[]] ? {} : [unknown[]] extends [TParams$1] ? {
1216
+ /** Contains the rule parameters when the rule accepts arguments. */
1174
1217
  readonly $params?: any[];
1175
1218
  } : {
1219
+ /** Contains the rule parameters when the rule accepts arguments. */
1176
1220
  readonly $params: [...TParams$1];
1177
1221
  });
1178
1222
  /**
@@ -1652,14 +1696,68 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
1652
1696
  useScopedRegle: TReturnedRegle;
1653
1697
  useCollectScope: useCollectScopeFn<TAsRecord>;
1654
1698
  };
1699
+ /**
1700
+ * Composable to collect and merge all Regle instances created with the default `useScopedRegle` within the same scope.
1701
+ * Returns a merged `r$` object allowing validation across multiple components simultaneously.
1702
+ *
1703
+ * Children properties like `$value` and `$errors` are converted to arrays instead of objects.
1704
+ * You have access to all validation properties like `$error`, `$invalid`, `$validate()`, etc.
1705
+ *
1706
+ * @param namespace - Optional namespace or array of namespaces to filter which scoped instances to collect
1707
+ * @returns Object containing `r$` - the merged Regle instance with array-based properties
1708
+ *
1709
+ * @example
1710
+ * ```ts
1711
+ * // ParentComponent.vue
1712
+ * import { useCollectScope } from '@regle/core';
1713
+ *
1714
+ * const { r$ } = useCollectScope();
1715
+ * // Or with namespace filtering
1716
+ * const { r$ } = useCollectScope('contacts');
1717
+ *
1718
+ * // Validate all collected forms
1719
+ * const { result, data } = await r$.$validate();
1720
+ * // Access collected errors
1721
+ * console.log(r$.$errors);
1722
+ * ```
1723
+ *
1724
+ * @see {@link https://reglejs.dev/advanced-usage/scoped-validation Documentation}
1725
+ */
1655
1726
  declare const useCollectScope: <TValue$1 extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: vue0.MaybeRefOrGetter<string | string[]>) => {
1656
- r$: MergedScopedRegles<TValue$1>;
1657
- }, useScopedRegle: useRegleFn<Partial<ExtendedRulesDeclarations>, never, {
1658
- dispose: () => void;
1659
- register: () => void;
1660
- }, {
1661
- namespace?: vue0.MaybeRefOrGetter<string>;
1662
- }>;
1727
+ r$: MergedScopedRegles<TValue$1>;
1728
+ };
1729
+ /**
1730
+ * Clone of `useRegle` that automatically registers its instance for collection by `useCollectScope`.
1731
+ * Every time it's called, a new instance is added for the parent scope to collect.
1732
+ *
1733
+ * Can be called multiple times anywhere in your app - not restricted to components or DOM.
1734
+ * When the component is unmounted or scope is disposed, the instance is automatically unregistered.
1735
+ *
1736
+ * @param state - Reactive state object to validate
1737
+ * @param rules - Validation rules to apply
1738
+ * @param options - Configuration options including optional `namespace` for scoping
1739
+ * @returns Object containing `r$` (Regle instance), `dispose()` and `register()` methods
1740
+ *
1741
+ * @example
1742
+ * ```ts
1743
+ * // ChildComponent.vue
1744
+ * import { useScopedRegle } from '@regle/core';
1745
+ *
1746
+ * const { r$ } = useScopedRegle(
1747
+ * { email: '' },
1748
+ * { email: { required, email } },
1749
+ * { namespace: 'contacts' }
1750
+ * );
1751
+ * ```
1752
+ *
1753
+ * @see {@link https://reglejs.dev/advanced-usage/scoped-validation Documentation}
1754
+ */
1755
+ declare const useScopedRegle: useRegleFn<Partial<ExtendedRulesDeclarations>, never, {
1756
+ dispose: () => void;
1757
+ register: () => void;
1758
+ }, {
1759
+ namespace?: vue0.MaybeRefOrGetter<string>;
1760
+ }>;
1663
1761
  /**
1664
1762
  * Create variant-based validation rules that depend on a discriminant field value.
1665
1763
  * Useful for union types where different fields are required based on a type discriminant.
@@ -1816,5 +1914,27 @@ declare function defineRules<TRules$1 extends RegleUnknownRulesTree>(rules: TRul
1816
1914
  * @see {@link https://reglejs.dev/common-usage/standard-schema#refinerules Documentation}
1817
1915
  */
1818
1916
  declare function refineRules<TRules$1 extends RegleUnknownRulesTree, TRefinement extends ReglePartialRuleTree<InferInput<TRules$1>> & RegleUnknownRulesTree>(rules: TRules$1, refinement: (state: Ref<InferInput<TRules$1>>) => TRefinement): (state: Ref<InferInput<TRules$1>>) => Merge<TRules$1, TRefinement>;
1917
+ /**
1918
+ * Vue plugin to enable Regle devtools integration with Vue Devtools.
1919
+ * Provides debugging capabilities for inspecting validation trees, states, and actions.
1920
+ *
1921
+ * Supports inspection of: `useRegle`, `useRules`, `useRegleSchema`, `useScopedRegle`, `useScopedRegleSchema`.
1922
+ *
1923
+ * Note: If using `@regle/nuxt`, devtools are automatically enabled.
1924
+ *
1925
+ * @example
1926
+ * ```ts
1927
+ * // main.ts
1928
+ * import { createApp } from 'vue';
1929
+ * import { RegleVuePlugin } from '@regle/core';
1930
+ * import App from './App.vue';
1931
+ *
1932
+ * const app = createApp(App);
1933
+ * app.use(RegleVuePlugin);
1934
+ * app.mount('#app');
1935
+ * ```
1936
+ *
1937
+ * @see {@link https://reglejs.dev/introduction/devtools Documentation}
1938
+ */
1819
1939
  declare const RegleVuePlugin: Plugin;
1820
1940
  export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type ExtendedRulesDeclarations, type FormRuleDeclaration, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferOutput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleSettings, type InferRegleShortcuts, type InferRegleStatusType, type InferRegleValidationResult, type InferSafeOutput, type InferValidOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type RegleLike, type RegleNestedResult, 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 RegleRuleWithParamsDefinitionInput, type RegleShortcutDefinition, type RegleSingleField, type RegleStatic, type RegleStaticImpl, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, RegleVuePlugin, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type TupleToPlainObj, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UnwrapStatic, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, variantToRef };
@@ -3004,9 +3004,10 @@ function buildRootChildrenNodes(r$, instanceId) {
3004
3004
  isCollection = true;
3005
3005
  } else if (isNestedRulesStatus(fieldStatus)) fieldChildren = buildNestedFieldNodes(fieldStatus.$fields, instanceId, fieldName);
3006
3006
  else if (isFieldStatus(fieldStatus)) fieldChildren = buildRuleNodes(fieldStatus, instanceId, fieldName);
3007
+ const filteredChildren = fieldChildren.filter((child) => child.label !== "$self");
3007
3008
  children.push({
3008
3009
  id: createFieldNodeId(instanceId, fieldName),
3009
- label: `${isCollection ? `${fieldName}[${fieldChildren.length}]` : fieldName}`,
3010
+ label: `${isCollection ? `${fieldName}[${filteredChildren.length}]` : fieldName}`,
3010
3011
  tags: fieldTags,
3011
3012
  children: fieldChildren
3012
3013
  });
@@ -3042,7 +3043,7 @@ function filterInspectorTree(nodes, filter) {
3042
3043
  return filtered;
3043
3044
  }
3044
3045
 
3045
- var version$1 = "1.14.0";
3046
+ var version$1 = "1.14.2";
3046
3047
 
3047
3048
  function createDevtools(app) {
3048
3049
  setupDevtoolsPlugin({
@@ -3125,6 +3126,11 @@ function createDevtools(app) {
3125
3126
  });
3126
3127
  }
3127
3128
 
3129
+ /**
3130
+ * @internal
3131
+ * This is the internal function that creates the root storage for the Regle instance.
3132
+ * This allows shared logic between all `useRegle` like composables
3133
+ */
3128
3134
  function useRootStorage({ initialState, originalState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode = false, onValidate }) {
3129
3135
  const storage = useStorage();
3130
3136
  const regle = ref();
@@ -3863,7 +3869,62 @@ function createScopedUseRegle(options) {
3863
3869
  useCollectScope: useCollectScope$1
3864
3870
  };
3865
3871
  }
3866
- const { useCollectScope, useScopedRegle } = createScopedUseRegle();
3872
+ const { useCollectScope: _useCollectScope, useScopedRegle: _useScopedRegle } = createScopedUseRegle();
3873
+ /**
3874
+ * Composable to collect and merge all Regle instances created with the default `useScopedRegle` within the same scope.
3875
+ * Returns a merged `r$` object allowing validation across multiple components simultaneously.
3876
+ *
3877
+ * Children properties like `$value` and `$errors` are converted to arrays instead of objects.
3878
+ * You have access to all validation properties like `$error`, `$invalid`, `$validate()`, etc.
3879
+ *
3880
+ * @param namespace - Optional namespace or array of namespaces to filter which scoped instances to collect
3881
+ * @returns Object containing `r$` - the merged Regle instance with array-based properties
3882
+ *
3883
+ * @example
3884
+ * ```ts
3885
+ * // ParentComponent.vue
3886
+ * import { useCollectScope } from '@regle/core';
3887
+ *
3888
+ * const { r$ } = useCollectScope();
3889
+ * // Or with namespace filtering
3890
+ * const { r$ } = useCollectScope('contacts');
3891
+ *
3892
+ * // Validate all collected forms
3893
+ * const { result, data } = await r$.$validate();
3894
+ * // Access collected errors
3895
+ * console.log(r$.$errors);
3896
+ * ```
3897
+ *
3898
+ * @see {@link https://reglejs.dev/advanced-usage/scoped-validation Documentation}
3899
+ */
3900
+ const useCollectScope = _useCollectScope;
3901
+ /**
3902
+ * Clone of `useRegle` that automatically registers its instance for collection by `useCollectScope`.
3903
+ * Every time it's called, a new instance is added for the parent scope to collect.
3904
+ *
3905
+ * Can be called multiple times anywhere in your app - not restricted to components or DOM.
3906
+ * When the component is unmounted or scope is disposed, the instance is automatically unregistered.
3907
+ *
3908
+ * @param state - Reactive state object to validate
3909
+ * @param rules - Validation rules to apply
3910
+ * @param options - Configuration options including optional `namespace` for scoping
3911
+ * @returns Object containing `r$` (Regle instance), `dispose()` and `register()` methods
3912
+ *
3913
+ * @example
3914
+ * ```ts
3915
+ * // ChildComponent.vue
3916
+ * import { useScopedRegle } from '@regle/core';
3917
+ *
3918
+ * const { r$ } = useScopedRegle(
3919
+ * { email: '' },
3920
+ * { email: { required, email } },
3921
+ * { namespace: 'contacts' }
3922
+ * );
3923
+ * ```
3924
+ *
3925
+ * @see {@link https://reglejs.dev/advanced-usage/scoped-validation Documentation}
3926
+ */
3927
+ const useScopedRegle = _useScopedRegle;
3867
3928
 
3868
3929
  /**
3869
3930
  * Create variant-based validation rules that depend on a discriminant field value.
@@ -4015,6 +4076,28 @@ function refineRules(rules, refinement) {
4015
4076
  return (state) => merge({ ...rules }, refinement(state));
4016
4077
  }
4017
4078
 
4079
+ /**
4080
+ * Vue plugin to enable Regle devtools integration with Vue Devtools.
4081
+ * Provides debugging capabilities for inspecting validation trees, states, and actions.
4082
+ *
4083
+ * Supports inspection of: `useRegle`, `useRules`, `useRegleSchema`, `useScopedRegle`, `useScopedRegleSchema`.
4084
+ *
4085
+ * Note: If using `@regle/nuxt`, devtools are automatically enabled.
4086
+ *
4087
+ * @example
4088
+ * ```ts
4089
+ * // main.ts
4090
+ * import { createApp } from 'vue';
4091
+ * import { RegleVuePlugin } from '@regle/core';
4092
+ * import App from './App.vue';
4093
+ *
4094
+ * const app = createApp(App);
4095
+ * app.use(RegleVuePlugin);
4096
+ * app.mount('#app');
4097
+ * ```
4098
+ *
4099
+ * @see {@link https://reglejs.dev/introduction/devtools Documentation}
4100
+ */
4018
4101
  const RegleVuePlugin = { install(app) {
4019
4102
  app.provide(regleSymbol, version$1);
4020
4103
  if (typeof window !== "undefined" && true) createDevtools(app);
@@ -1 +1 @@
1
- import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor?.name==`File`||e?.constructor?.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(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 C(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>C(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,S(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=C(e[r],t++);return n}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function k(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function A(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]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function j(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function M(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!M(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(w(e)&&w(t)&&s&&(r||!r&&n)&&!M(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var N=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function P(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{if(n.aborted){r(new N);return}function i(){r(new N)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new N):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new N):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const F={Inline:`__inline`,Async:`__async`};function I(e){try{return e.map(e=>p(e))}catch{return[]}}function L(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function R(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function z(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===F.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...I(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:I(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:I(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:I(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...I(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:L(t),_brand:x})}function B(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=z({...e,async:n},...t);if(R(e.validator)>1){let t=function(...t){return z(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function V(e){return w(e.value)}function H(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const U={LessThan:-1,EqualTo:0,GreaterThan:1};function ee(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return U.GreaterThan;if(i>t)return U.LessThan;if(!isNaN(t)&&isNaN(i))return U.GreaterThan;if(isNaN(t)&&!isNaN(i))return U.LessThan}return U.EqualTo}const W=ee(g,`3.5.0`)!==-1;function G(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?G():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function q(e){return r()?(c(e),!0):!1}function J(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function Y(e,t){return e.some(e=>t?e?.[t]:!1)}function X(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function Z(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=I(i._params),n=I(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}const te=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function ne(e,t){return!oe(e.value)&&(V(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function re(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)||Array.isArray(t.value)&&t.value.some(w)}function ie(e){return!!e.value&&(w(e.value)||V(e.value))}function $(e){return w(e)&&`_validator`in e}function ae(e){return typeof e.value==`function`?`_validator`in e.value:!0}function oe(e){return w(e)&&D(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function se(e){return w(e)&&`$fields`in e}function ce(e){return!!e&&`$rules`in e}function le({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function ue({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function de(e){return w(e)&&`$each`in e}function fe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(de(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>pe(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>pe(t,n,[e])).flat()}function pe(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(de(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>pe(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>pe(n,t,r?.concat(e))).flat()}function me({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>$(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.value})),p=e(()=>{try{return ae(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),ae(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>ae(r)&&r.value.type?r.value.type:i),S=e(()=>ae(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:I(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:e(()=>`${o}.${_.value}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n 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(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$reset:D})}function he(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:fe(i,{includePath:!0})}}}}}function ge({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:T,shortcuts:E,onValidate:D}){let O=t(),k,N=[],F,I,L,R,z=()=>{},B,V=u(!1);function H(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Y.value=s,G();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,me({modifiers:{$silent:k.$silent,$rewardEarly:k.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(u),k.processShortcuts(),U(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z()),c.addRuleDeclEntry(o,e)}function U(){z=k.$debounce.value>0?j(q,k.$debounce.value,{trackDebounceRef:V}):q}function ee(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();I(),R?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),F?.(),O.stop(),O=t();for(let e of N)e.stop();N=[],y?.(),L?.()}function G(){if(J.value)for(let e of Object.values(J.value))e.$watch();k=O.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>x||oe(n.value)),f=e(()=>Y.value.$debounce==null?k.$haveAnyAsyncRule.value?200:0:Y.value.$debounce),_=e(()=>Y.value.$deepCompare==null?!1:Y.value.$deepCompare),y=e(()=>Y.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):Y.value.$lazy),C=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Y.value.$rewardEarly),w=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!T.value:h(d.clearExternalErrorsOnChange):Y.value.$clearExternalErrorsOnChange),T=e(()=>C.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Y.value.$silent),D=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Y.value.$autoDirty),O=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),j=e({get:()=>n.value,set(e){F(),n.value=e,K()}}),P=e(()=>V.value?G.value&&i.value:G.value&&!W.value&&i.value),I=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value}})),L=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value},silent:!0})),R=e(()=>I.value.map(e=>e.$message)),z=e(()=>L.value.map(e=>e.$message)),B=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?A(S.value).getDate()!==A(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!M(n.value,S.value,Y.value.$deepCompare):S.value!==n.value:!1),H=e(()=>B.value),U=e(()=>ue({field:{$rules:J.value}})),ee=e(()=>!(G.value||W.value)),W=e(()=>a.value||!C.value?Object.entries(J.value).some(([e,t])=>t.$pending):!1),G=e(()=>p?.value?.length||m?.value?.length?!0:X.value?!1:Object.values(J.value).some(e=>!e.$valid||e.$maybePending)),q=e(()=>s??d.id??`root`),X=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Z=e(()=>{if(p?.value?.length||X.value||V.value)return!1;if(i.value&&!b(n.value)&&!O.value&&!W.value){if(g)return!m?.value?.length;{let e=Object.values(J.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),te=e(()=>Object.values(J.value).some(e=>e.$haveAsync)),Q=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:D.value,$silent:T.value,$clearExternalErrorsOnChange:w.value}));function ne(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();re[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:j,$rules:J,$error:P,$pending:W,$invalid:G,$correct:Z,$errors:R,$ready:ee,$silentErrors:z,$anyDirty:o,$tooltips:U,$name:q,$inactive:X,$edited:B,$anyEdited:H}))}),e}),N.push(a)})}let re={};return{$error:P,$pending:W,$invalid:G,$correct:Z,$debounce:f,$deepCompare:_,$lazy:y,$ready:ee,$issues:I,$silentIssues:L,$errors:R,$silentErrors:z,$rewardEarly:C,$autoDirty:D,$silent:T,$clearExternalErrorsOnChange:w,$anyDirty:o,$edited:B,$anyEdited:H,$name:q,$haveAnyAsyncRule:te,$shortcuts:re,$validating:O,$tooltips:U,$dirty:i,processShortcuts:ne,$silentValue:j,$inactive:X,$modifiers:Q,$isArrayOrRegleStatic:c}}),K(),I=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),R=_([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=k.$error.value,e.$fieldInvalid=k.$invalid.value,e.$fieldPending=k.$pending.value,e.$fieldCorrect=k.$correct.value})}),L=_(k.$haveAnyAsyncRule,U)}function K(){F=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||(k.$dirty.value=!0)),r.value instanceof Function&&H(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z(),k.$clearExternalErrorsOnChange.value&&$()},{deep:k.$isArrayOrRegleStatic.value?!0:W?1:!0})}async function q(){try{let{promise:e}=te(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=u({}),Y=u({});H();function X(e,t){if(Z(),$(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&$(),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse()}function Z(){`cancel`in z&&z.cancel()}function te(e){return B&&B.abort(),B=P(e),B}function Q(){Z(),B&&B.abort()}function ne(e=!0,t=!1){k.$dirty.value||(k.$dirty.value=!0),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Z(),z()):e&&(Z(),z())}async function re(e){try{if(e&&(n.value=e),g)return D?(ne(!1),D()):{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value};let t=n.value;if(!k.$dirty.value)k.$dirty.value=!0;else if(!k.$silent.value&&k.$dirty.value&&!k.$pending.value&&!V.value&&!k.$haveAnyAsyncRule.value)return{valid:!k.$error.value,data:t,errors:k.$errors.value,issues:k.$issues.value};if(g)return{valid:!m?.value?.length,data:t,errors:k.$errors.value,issues:k.$issues.value};if(b(J.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};Q();let{promise:r}=te(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:k.$errors.value,issues:k.$issues.value}}catch{return{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value}}}function ie(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function $(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&q();let{$shortcuts:ae,$validating:se,$autoDirty:ce,$rewardEarly:de,$clearExternalErrorsOnChange:fe,$haveAnyAsyncRule:pe,$debounce:ge,$lazy:_e,...ve}=k;return l({...ve,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:J,...ae,$path:a,$isDebouncing:V,$reset:X,$touch:ne,$validate:re,$unwatch:ee,$watch:G,$extractDirtyFields:ie,$clearExternalErrors:$,$abort:Q,$schemaMode:g,"~modifiers":k.$modifiers,...he(re)})}function _e({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_}){let v=s.value?.$id??l.$key??K(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=be({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),s.value&&!w(s.value)&&_&&C?.$touch(),C}function ve({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:d,schemaErrors:p,schemaMode:m,initialState:g,originalState:y,shortcuts:x,fieldName:S}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),A=u(n.value),j=u({}),M,N,P=u({}),F=s.getCollectionsEntry(a);D=E.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>$(e)||typeof e==`function`):!1:!1)})),I(),B();function I(){j.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=K(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=P.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)?F.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=H(r.value.$each,f(()=>t),n);l&&O.push(l);let h=f(g.value??[],n),_=f(d?.value??{},`$each`),v=e(()=>p?.value?.$each);return _e({$id:k.value,path:a,cachePath:o,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:c,storage:s,externalErrors:_,schemaErrors:v,initialState:h,originalState:y,shortcuts:x,fieldName:S,schemaMode:m})||null}).filter(e=>!!e):F.value=[],P.value=ge({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:f(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:g,originalState:y,shortcuts:x,fieldName:S,schemaMode:m})}function L(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)){let t=C(F.value);F.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&F.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);return e?(e.$value=o,e):null}else{let{scope:t,unwrapped:l}=H(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return _e({$id:k.value,path:a,cachePath:a,customMessages:i,rules:l??{},stateValue:o,index:n,options:c,storage:s,externalErrors:u,schemaErrors:h,initialState:f(g.value??[],n),originalState:y,shortcuts:x,fieldName:S,schemaMode:m})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())})}else F.value=[]}function R(){M=_(n,()=>{N?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?I():L(),z()},{deep:W?1:!0,flush:`pre`}),z()}function z(){N=_(n,()=>{T.$autoDirty.value&&!T.$silent.value&&P.value.$touch(!1,!0)},{flush:`post`})}function B(){R(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){M?.(),N?.(),n.value=e,R()}}),i=e(()=>P.value.$dirty&&(!F.value.length||F.value.every(e=>e.$dirty))),o=e(()=>P.value.$anyDirty||F.value.some(e=>e.$anyDirty)),s=e(()=>P.value.$invalid||F.value.some(e=>e.$invalid)),d=e(()=>(m?P.value.$correct:b(P.value.$rules)?!0:P.value.$correct)&&(!F.value.length||F.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>P.value.$error||F.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>P.value.$pending||F.value.some(e=>e.$pending)),C=e(()=>!!F.value.length&&F.value.every(e=>e.$edited)),w=e(()=>P.value.$anyEdited||F.value.some(e=>e.$anyEdited)),T=e(()=>({$self:P.value.$issues,$each:F.value.map(e=>e.$issues)})),E=e(()=>({$self:P.value.$errors,$each:F.value.map(e=>e.$errors)})),D=e(()=>({$self:P.value.$silentErrors,$each:F.value.map(e=>e.$silentErrors)})),k=e(()=>j.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):j.value.$rewardEarly),A=e(()=>k.value?!0:j.value.$silent==null?h(c.silent)==null?!1:h(c.silent):j.value.$silent),I=e(()=>j.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):j.value.$autoDirty),L=e(()=>S??c.id??`root`),z=e(()=>({$deepCompare:j.value.$deepCompare??!1,$lazy:j.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:I.value,$silent:A.value,$clearExternalErrorsOnChange:j.value.$clearExternalErrorsOnChange??!1}));function B(){x?.collections&&Object.entries(x?.collections).forEach(([e,c])=>{let m=t();V[e]=m.run(()=>{let e=u();return v(()=>{e.value=c(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:s,$correct:d,$errors:E,$silentErrors:D,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:F,$self:P,$value:n,$edited:C,$anyEdited:w,$issues:T}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:E,$silentErrors:D,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:C,$anyEdited:w,$rewardEarly:k,$silent:A,$autoDirty:I,$issues:T,$modifiers:z}}),D.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function V(){M?.(),P.value&&P.value.$unwatch(),F.value&&F.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function U(e=!0,t=!1){P.value.$touch(e,t),F.value.forEach(n=>{n.$touch(e,t)})}function ee(e,t){if(V(),!t)if(e?.toOriginalState)n.value=C(y),g.value=C(y);else if(e?.toInitialState)n.value=C(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=C(t),n.value=C(t)}else g.value=C(n.value);e?.clearExternalErrors&&J(),e?.keepValidationState||(P.value.$reset(e,t),F.value.forEach(t=>{t.$reset(e,!0)})),t||I()}function G(){P.value.$abort(),F.value.forEach(e=>{e.$abort()})}async function q(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([P.value.$validate(e),...F.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function J(){P.value.$clearExternalErrors(),F.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e=!0){let t=F.value.map(t=>{if(se(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:X,...Z}=T;return l({$self:P,...Z,...X,$path:a,$each:F,$value:n,$initialValue:g,$originalValue:y,$validate:q,$unwatch:V,$watch:B,$touch:U,$reset:ee,$abort:G,$extractDirtyFields:Y,$clearExternalErrors:J,"~modifiers":T.$modifiers,...he(q)})}function ye({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),T,E=[],D=null,O=null,k=null,A=null;async function j(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,be({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,be({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t);return[t,be({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,be({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));M.value={...l,...u,...d,...p},t&&F()}let M=x.storage.getFieldsEntry(a);j();function N(){s&&(k=_(s,()=>{I(),j()},{deep:!0}))}function P(){A=_(r,()=>{I(),j(),T.$autoDirty.value&&!T.$silent.value&&z(!1,!0)},{flush:`post`})}function F(){o&&(D?.(),D=_(o,()=>{I(),j()},{deep:!0,flush:`pre`}),N()),d&&(O?.(),O=_(d,()=>{I(),j()},{deep:!0,flush:`post`})),P(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){I(),r.value=e,j(),T.$autoDirty.value&&!T.$silent.value&&z(!1,!0)}}),a=e({get:()=>r.value,set(e){I(),r.value=e,j()}}),o=e(()=>{let e=M.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=M.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=M.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(M.value).reduce((e,[t,n])=>((!ce(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>ce(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct):!1}),f=e(()=>{let e=M.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=M.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$silentErrors;return e}),N=e(()=>{if(!Object.keys(M.value).length)return!1;for(let e in M.value)if(!M.value[e]?.$edited)return!1;return!0}),P=e(()=>{for(let e in M.value)if(M.value[e]?.$anyEdited)return!0;return!1}),F=e(()=>y??x.options.id??`root`),L=e(()=>({autoDirty:S.value,lazy:h(x.options.lazy)??!1,rewardEarly:_.value,silent:b.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function R(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();V[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:F,$silentErrors:A,$initialValue:m,$errors:k,$fields:M,$edited:N,$anyEdited:P,$issues:O,"~modifiers":h(x.options)}))}),e}),E.push(p)})}let B=e({get:()=>p?Object.fromEntries(Object.entries(p?.(M.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,Y(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,X(t,e)]))}]:[])):{},set(){}}),V={};return R(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:F,$shortcuts:V,$groups:B,$silentValue:a,$edited:N,$anyEdited:P,$localPending:w,$autoDirty:S,$silent:b,$value:n,$modifiers:L}})}function I(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},M.value)for(let e of Object.values(M.value))e?.$unwatch()}function L(){let e=M.value;for(let t of Object.values(e))t.$clearExternalErrors()}function R(e,t){if(k?.(),I(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else if(e?.toInitialState)r.value=C({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);if(!e?.keepValidationState)for(let t of Object.values(M.value))t?.$reset(e,!0);e?.clearExternalErrors&&L(),N(),t||j()}function z(e=!0,t=!1){for(let n of Object.values(M.value))n?.$touch(e,t)}function B(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function V(e=!0){let t=Object.entries(M.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=B(t)),Object.fromEntries(t)}function H(){for(let e of Object.values(M.value))e.$abort()}async function U(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(z(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value};{let e=r.value;return H(),{valid:(await Promise.allSettled(Object.values(M.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e,errors:T.$errors.value,issues:T.$issues.value}}}catch{return{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value}}finally{T.$localPending.value=!1}}let{$shortcuts:ee,$localPending:W,...G}=T,K=l({...G,...ee,$path:i,$initialValue:m,$originalValue:g,$fields:M,$reset:R,$touch:z,$validate:U,$unwatch:I,$watch:F,$clearExternalErrors:L,$extractDirtyFields:V,$abort:H,...o?{"~modifiers":T.$modifiers}:{},...he(U)});return v(()=>{for(let e of Object.keys(K).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete K[e];for(let e of Object.values(M.value))e?.$name&&Object.assign(K,{[e.$name]:e})}),K}function be({rulesDef:e,...n}){if(re(e,n.state,n.schemaMode))return ve({rulesDef:e,...n});if(ne(n.state,e)){if(V(n.state))return ye({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return ye({rulesDef:e,...a,state:r.fakeState})}}else if(ie(e))return ge({rulesDef:i(e.value)?e.value:e,...n})}var xe=`1.14.0`;function Se({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=Z(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),ne(a,i)?h.value=ye({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):ie(i)&&(h.value=ge({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch(),y?.(),v?.()}),l({regle:h})}function Ce({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s}){let c=i(n)?n:typeof n==`function`?void 0:e(()=>n),l={...a,...r},f,p=d(c??{});typeof n==`function`&&(f=v(()=>{p.value=n(t),m(p)}));let h=u(w(t.value)?{...C(t.value)}:C(t.value)),g=w(t.value)?{...C(t.value)}:C(t.value);return q(()=>{f?.()}),Se({scopeRules:p,state:t,options:l,initialState:h,originalState:g,customRules:o,shortcuts:s})}function we(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(t,a,o){return{r$:Ce({state:i(t)?t:u(t),rulesFactory:a,options:o,globalOptions:r,customRules:e,shortcuts:n}).regle}}return a}const Te=we();function Ee(){function e(e,t){return t}return e}const De=Ee();function Oe(e){let t={};if(Object.entries(e).some(([e,t])=>$(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&w(r)&&`$each`in r&&r.$each&&w(r.$each)?t[n]=[Oe(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=Oe(r):t[n]=null}return t}function ke(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o){let s=i(n)?n:typeof n==`function`?void 0:e(()=>n);return Ce({state:u(Oe(s?.value)),rulesFactory:s,options:o,globalOptions:a,customRules:t,shortcuts:r}).regle}return o}const Ae=ke();function je(e){if(k(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Me(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Me(n)}return Me(e)}function Me(e){return!D(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&O(e,Q.REGLE_STATIC,!0),e}function Ne({rules:e,modifiers:t,shortcuts:n}){let r=we(e,t,n),i=ke(e,t,n);return r.__config={rules:e,modifiers:t,shortcuts:n},i.__config={rules:e,modifiers:t,shortcuts:n},{useRegle:r,inferRules:Ee(),useRules:i}}function Pe(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=we(a,o,s);return c.__config={rules:a,modifiers:o,shortcuts:s},{useRegle:c,inferRules:Ee()}}function Fe(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),y=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),b=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function E(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}let D=l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:y,$anyEdited:b,$reset:S,$touch:C,$validate:E,$extractDirtyFields:w,$clearExternalErrors:T});return v(()=>{if(!r){for(let e of Object.keys(D).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete D[e];for(let[e,t]of Object.entries(x.value))Object.assign(D,{[e]:t})}}),D}function Ie(t,n){function r(r){let i=e(()=>p(r)),a=l({});c();let o=u(d(t.value)),s=l({r$:o});function c(){i.value&&(typeof i.value==`string`&&!t.value[i.value]?t.value[i.value]={}:Array.isArray(i.value)&&i.value.forEach(e=>{t.value[e]||(t.value[e]={})}))}_(i,c),_(t,e=>{o.value=d(e)},{deep:!0});function d(e){return i.value?typeof i.value==`string`?Fe(e[i.value]??{},!n.asRecord):(Object.keys(a).forEach(e=>{delete a[e]}),i.value.forEach(t=>{Object.entries(e[t]).forEach(([e,t])=>{Object.assign(a,{[e]:t})})}),Fe(a,!n.asRecord)):Fe(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Le(t,r){let i=r??Te;return{useScopedRegle:((r,a,o)=>{let{namespace:c,scopeKey:l,id:d,...f}=o??{};i.__config??={};let m=e(()=>d??l),h=e(()=>p(c)),g=u(`${Object.keys(t.value).length+1}-${K()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),q(b),_(h,(e,t)=>{b(t),x()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&b()});function b(e){let n=e??h.value;n?t.value[n]&&delete t.value[n][v.value]:t.value[`~~global`][v.value]&&delete t.value[`~~global`][v.value]}function x(){h.value?(t.value[h.value]||(t.value[h.value]={}),t.value[h.value][v.value]=y):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][v.value]=y)}return{r$:y,dispose:b,register:x}})}}function Re(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):J(()=>u({"~~global":{}})))(),{useScopedRegle:n}=Le(t,e?.customUseRegle),{useCollectScope:r}=Ie(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:ze,useScopedRegle:Be}=Re();function Ve(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if($(t))return h(t._params?.[0])===i.value}})||r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function He(e,t,n){return!!e&&w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ue(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),He(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function We(e){return e}function Ge(e,t){return n=>T({...e},t(n))}const Ke={install(e){e.provide(te,xe)}};export{F as InternalRuleType,Ke as RegleVuePlugin,B as createRule,Re as createScopedUseRegle,Ve as createVariant,Ne as defineRegleConfig,We as defineRules,Pe as extendRegleConfig,fe as flatErrors,De as inferRules,je as markStatic,Fe as mergeRegles,He as narrowVariant,Ge as refineRules,I as unwrapRuleParameters,ze as useCollectScope,Te as useRegle,Se as useRootStorage,Ae as useRules,Be as useScopedRegle,Ue as variantToRef};
1
+ import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor?.name==`File`||e?.constructor?.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(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 C(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>C(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,S(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=C(e[r],t++);return n}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function k(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function A(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]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function j(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function M(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!M(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(w(e)&&w(t)&&s&&(r||!r&&n)&&!M(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var N=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function P(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{if(n.aborted){r(new N);return}function i(){r(new N)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new N):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new N):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const F={Inline:`__inline`,Async:`__async`};function I(e){try{return e.map(e=>p(e))}catch{return[]}}function L(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function R(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function z(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===F.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...I(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:I(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:I(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:I(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...I(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:L(t),_brand:x})}function B(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=z({...e,async:n},...t);if(R(e.validator)>1){let t=function(...t){return z(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function V(e){return w(e.value)}function H(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const U={LessThan:-1,EqualTo:0,GreaterThan:1};function ee(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return U.GreaterThan;if(i>t)return U.LessThan;if(!isNaN(t)&&isNaN(i))return U.GreaterThan;if(isNaN(t)&&!isNaN(i))return U.LessThan}return U.EqualTo}const W=ee(g,`3.5.0`)!==-1;function G(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?G():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function q(e){return r()?(c(e),!0):!1}function J(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function Y(e,t){return e.some(e=>t?e?.[t]:!1)}function X(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function Z(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=I(i._params),n=I(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}const te=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function ne(e,t){return!oe(e.value)&&(V(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function re(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)||Array.isArray(t.value)&&t.value.some(w)}function ie(e){return!!e.value&&(w(e.value)||V(e.value))}function $(e){return w(e)&&`_validator`in e}function ae(e){return typeof e.value==`function`?`_validator`in e.value:!0}function oe(e){return w(e)&&D(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function se(e){return w(e)&&`$fields`in e}function ce(e){return!!e&&`$rules`in e}function le({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function ue({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function de(e){return w(e)&&`$each`in e}function fe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(de(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>pe(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>pe(t,n,[e])).flat()}function pe(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(de(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>pe(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>pe(n,t,r?.concat(e))).flat()}function me({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>$(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.value})),p=e(()=>{try{return ae(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),ae(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>ae(r)&&r.value.type?r.value.type:i),S=e(()=>ae(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:I(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:e(()=>`${o}.${_.value}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n 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(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$reset:D})}function he(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:fe(i,{includePath:!0})}}}}}function ge({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:T,shortcuts:E,onValidate:D}){let O=t(),k,N=[],F,I,L,R,z=()=>{},B,V=u(!1);function H(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Y.value=s,G();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,me({modifiers:{$silent:k.$silent,$rewardEarly:k.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(u),k.processShortcuts(),U(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z()),c.addRuleDeclEntry(o,e)}function U(){z=k.$debounce.value>0?j(q,k.$debounce.value,{trackDebounceRef:V}):q}function ee(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();I(),R?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),F?.(),O.stop(),O=t();for(let e of N)e.stop();N=[],y?.(),L?.()}function G(){if(J.value)for(let e of Object.values(J.value))e.$watch();k=O.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>x||oe(n.value)),f=e(()=>Y.value.$debounce==null?k.$haveAnyAsyncRule.value?200:0:Y.value.$debounce),_=e(()=>Y.value.$deepCompare==null?!1:Y.value.$deepCompare),y=e(()=>Y.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):Y.value.$lazy),C=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Y.value.$rewardEarly),w=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!T.value:h(d.clearExternalErrorsOnChange):Y.value.$clearExternalErrorsOnChange),T=e(()=>C.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Y.value.$silent),D=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Y.value.$autoDirty),O=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),j=e({get:()=>n.value,set(e){F(),n.value=e,K()}}),P=e(()=>V.value?G.value&&i.value:G.value&&!W.value&&i.value),I=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value}})),L=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value},silent:!0})),R=e(()=>I.value.map(e=>e.$message)),z=e(()=>L.value.map(e=>e.$message)),B=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?A(S.value).getDate()!==A(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!M(n.value,S.value,Y.value.$deepCompare):S.value!==n.value:!1),H=e(()=>B.value),U=e(()=>ue({field:{$rules:J.value}})),ee=e(()=>!(G.value||W.value)),W=e(()=>a.value||!C.value?Object.entries(J.value).some(([e,t])=>t.$pending):!1),G=e(()=>p?.value?.length||m?.value?.length?!0:X.value?!1:Object.values(J.value).some(e=>!e.$valid||e.$maybePending)),q=e(()=>s??d.id??`root`),X=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Z=e(()=>{if(p?.value?.length||X.value||V.value)return!1;if(i.value&&!b(n.value)&&!O.value&&!W.value){if(g)return!m?.value?.length;{let e=Object.values(J.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),te=e(()=>Object.values(J.value).some(e=>e.$haveAsync)),Q=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:D.value,$silent:T.value,$clearExternalErrorsOnChange:w.value}));function ne(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();re[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:j,$rules:J,$error:P,$pending:W,$invalid:G,$correct:Z,$errors:R,$ready:ee,$silentErrors:z,$anyDirty:o,$tooltips:U,$name:q,$inactive:X,$edited:B,$anyEdited:H}))}),e}),N.push(a)})}let re={};return{$error:P,$pending:W,$invalid:G,$correct:Z,$debounce:f,$deepCompare:_,$lazy:y,$ready:ee,$issues:I,$silentIssues:L,$errors:R,$silentErrors:z,$rewardEarly:C,$autoDirty:D,$silent:T,$clearExternalErrorsOnChange:w,$anyDirty:o,$edited:B,$anyEdited:H,$name:q,$haveAnyAsyncRule:te,$shortcuts:re,$validating:O,$tooltips:U,$dirty:i,processShortcuts:ne,$silentValue:j,$inactive:X,$modifiers:Q,$isArrayOrRegleStatic:c}}),K(),I=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),R=_([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=k.$error.value,e.$fieldInvalid=k.$invalid.value,e.$fieldPending=k.$pending.value,e.$fieldCorrect=k.$correct.value})}),L=_(k.$haveAnyAsyncRule,U)}function K(){F=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||(k.$dirty.value=!0)),r.value instanceof Function&&H(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z(),k.$clearExternalErrorsOnChange.value&&$()},{deep:k.$isArrayOrRegleStatic.value?!0:W?1:!0})}async function q(){try{let{promise:e}=te(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=u({}),Y=u({});H();function X(e,t){if(Z(),$(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&$(),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse()}function Z(){`cancel`in z&&z.cancel()}function te(e){return B&&B.abort(),B=P(e),B}function Q(){Z(),B&&B.abort()}function ne(e=!0,t=!1){k.$dirty.value||(k.$dirty.value=!0),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Z(),z()):e&&(Z(),z())}async function re(e){try{if(e&&(n.value=e),g)return D?(ne(!1),D()):{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value};let t=n.value;if(!k.$dirty.value)k.$dirty.value=!0;else if(!k.$silent.value&&k.$dirty.value&&!k.$pending.value&&!V.value&&!k.$haveAnyAsyncRule.value)return{valid:!k.$error.value,data:t,errors:k.$errors.value,issues:k.$issues.value};if(g)return{valid:!m?.value?.length,data:t,errors:k.$errors.value,issues:k.$issues.value};if(b(J.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};Q();let{promise:r}=te(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:k.$errors.value,issues:k.$issues.value}}catch{return{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value}}}function ie(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function $(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&q();let{$shortcuts:ae,$validating:se,$autoDirty:ce,$rewardEarly:de,$clearExternalErrorsOnChange:fe,$haveAnyAsyncRule:pe,$debounce:ge,$lazy:_e,...ve}=k;return l({...ve,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:J,...ae,$path:a,$isDebouncing:V,$reset:X,$touch:ne,$validate:re,$unwatch:ee,$watch:G,$extractDirtyFields:ie,$clearExternalErrors:$,$abort:Q,$schemaMode:g,"~modifiers":k.$modifiers,...he(re)})}function _e({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_}){let v=s.value?.$id??l.$key??K(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=be({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),s.value&&!w(s.value)&&_&&C?.$touch(),C}function ve({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:d,schemaErrors:p,schemaMode:m,initialState:g,originalState:y,shortcuts:x,fieldName:S}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),A=u(n.value),j=u({}),M,N,P=u({}),F=s.getCollectionsEntry(a);D=E.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>$(e)||typeof e==`function`):!1:!1)})),I(),B();function I(){j.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=K(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=P.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)?F.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=H(r.value.$each,f(()=>t),n);l&&O.push(l);let h=f(g.value??[],n),_=f(d?.value??{},`$each`),v=e(()=>p?.value?.$each);return _e({$id:k.value,path:a,cachePath:o,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:c,storage:s,externalErrors:_,schemaErrors:v,initialState:h,originalState:y,shortcuts:x,fieldName:S,schemaMode:m})||null}).filter(e=>!!e):F.value=[],P.value=ge({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:f(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:g,originalState:y,shortcuts:x,fieldName:S,schemaMode:m})}function L(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)){let t=C(F.value);F.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&F.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);return e?(e.$value=o,e):null}else{let{scope:t,unwrapped:l}=H(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return _e({$id:k.value,path:a,cachePath:a,customMessages:i,rules:l??{},stateValue:o,index:n,options:c,storage:s,externalErrors:u,schemaErrors:h,initialState:f(g.value??[],n),originalState:y,shortcuts:x,fieldName:S,schemaMode:m})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())})}else F.value=[]}function R(){M=_(n,()=>{N?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?I():L(),z()},{deep:W?1:!0,flush:`pre`}),z()}function z(){N=_(n,()=>{T.$autoDirty.value&&!T.$silent.value&&P.value.$touch(!1,!0)},{flush:`post`})}function B(){R(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){M?.(),N?.(),n.value=e,R()}}),i=e(()=>P.value.$dirty&&(!F.value.length||F.value.every(e=>e.$dirty))),o=e(()=>P.value.$anyDirty||F.value.some(e=>e.$anyDirty)),s=e(()=>P.value.$invalid||F.value.some(e=>e.$invalid)),d=e(()=>(m?P.value.$correct:b(P.value.$rules)?!0:P.value.$correct)&&(!F.value.length||F.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>P.value.$error||F.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>P.value.$pending||F.value.some(e=>e.$pending)),C=e(()=>!!F.value.length&&F.value.every(e=>e.$edited)),w=e(()=>P.value.$anyEdited||F.value.some(e=>e.$anyEdited)),T=e(()=>({$self:P.value.$issues,$each:F.value.map(e=>e.$issues)})),E=e(()=>({$self:P.value.$errors,$each:F.value.map(e=>e.$errors)})),D=e(()=>({$self:P.value.$silentErrors,$each:F.value.map(e=>e.$silentErrors)})),k=e(()=>j.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):j.value.$rewardEarly),A=e(()=>k.value?!0:j.value.$silent==null?h(c.silent)==null?!1:h(c.silent):j.value.$silent),I=e(()=>j.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):j.value.$autoDirty),L=e(()=>S??c.id??`root`),z=e(()=>({$deepCompare:j.value.$deepCompare??!1,$lazy:j.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:I.value,$silent:A.value,$clearExternalErrorsOnChange:j.value.$clearExternalErrorsOnChange??!1}));function B(){x?.collections&&Object.entries(x?.collections).forEach(([e,c])=>{let m=t();V[e]=m.run(()=>{let e=u();return v(()=>{e.value=c(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:s,$correct:d,$errors:E,$silentErrors:D,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:F,$self:P,$value:n,$edited:C,$anyEdited:w,$issues:T}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:E,$silentErrors:D,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:C,$anyEdited:w,$rewardEarly:k,$silent:A,$autoDirty:I,$issues:T,$modifiers:z}}),D.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function V(){M?.(),P.value&&P.value.$unwatch(),F.value&&F.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function U(e=!0,t=!1){P.value.$touch(e,t),F.value.forEach(n=>{n.$touch(e,t)})}function ee(e,t){if(V(),!t)if(e?.toOriginalState)n.value=C(y),g.value=C(y);else if(e?.toInitialState)n.value=C(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=C(t),n.value=C(t)}else g.value=C(n.value);e?.clearExternalErrors&&J(),e?.keepValidationState||(P.value.$reset(e,t),F.value.forEach(t=>{t.$reset(e,!0)})),t||I()}function G(){P.value.$abort(),F.value.forEach(e=>{e.$abort()})}async function q(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([P.value.$validate(e),...F.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function J(){P.value.$clearExternalErrors(),F.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e=!0){let t=F.value.map(t=>{if(se(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:X,...Z}=T;return l({$self:P,...Z,...X,$path:a,$each:F,$value:n,$initialValue:g,$originalValue:y,$validate:q,$unwatch:V,$watch:B,$touch:U,$reset:ee,$abort:G,$extractDirtyFields:Y,$clearExternalErrors:J,"~modifiers":T.$modifiers,...he(q)})}function ye({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),T,E=[],D=null,O=null,k=null,A=null;async function j(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,be({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,be({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t);return[t,be({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,be({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));M.value={...l,...u,...d,...p},t&&F()}let M=x.storage.getFieldsEntry(a);j();function N(){s&&(k=_(s,()=>{I(),j()},{deep:!0}))}function P(){A=_(r,()=>{I(),j(),T.$autoDirty.value&&!T.$silent.value&&z(!1,!0)},{flush:`post`})}function F(){o&&(D?.(),D=_(o,()=>{I(),j()},{deep:!0,flush:`pre`}),N()),d&&(O?.(),O=_(d,()=>{I(),j()},{deep:!0,flush:`post`})),P(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){I(),r.value=e,j(),T.$autoDirty.value&&!T.$silent.value&&z(!1,!0)}}),a=e({get:()=>r.value,set(e){I(),r.value=e,j()}}),o=e(()=>{let e=M.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=M.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=M.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(M.value).reduce((e,[t,n])=>((!ce(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>ce(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct):!1}),f=e(()=>{let e=M.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=M.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$silentErrors;return e}),N=e(()=>{if(!Object.keys(M.value).length)return!1;for(let e in M.value)if(!M.value[e]?.$edited)return!1;return!0}),P=e(()=>{for(let e in M.value)if(M.value[e]?.$anyEdited)return!0;return!1}),F=e(()=>y??x.options.id??`root`),L=e(()=>({autoDirty:S.value,lazy:h(x.options.lazy)??!1,rewardEarly:_.value,silent:b.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function R(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();V[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:F,$silentErrors:A,$initialValue:m,$errors:k,$fields:M,$edited:N,$anyEdited:P,$issues:O,"~modifiers":h(x.options)}))}),e}),E.push(p)})}let B=e({get:()=>p?Object.fromEntries(Object.entries(p?.(M.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,Y(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,X(t,e)]))}]:[])):{},set(){}}),V={};return R(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:F,$shortcuts:V,$groups:B,$silentValue:a,$edited:N,$anyEdited:P,$localPending:w,$autoDirty:S,$silent:b,$value:n,$modifiers:L}})}function I(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},M.value)for(let e of Object.values(M.value))e?.$unwatch()}function L(){let e=M.value;for(let t of Object.values(e))t.$clearExternalErrors()}function R(e,t){if(k?.(),I(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else if(e?.toInitialState)r.value=C({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);if(!e?.keepValidationState)for(let t of Object.values(M.value))t?.$reset(e,!0);e?.clearExternalErrors&&L(),N(),t||j()}function z(e=!0,t=!1){for(let n of Object.values(M.value))n?.$touch(e,t)}function B(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function V(e=!0){let t=Object.entries(M.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=B(t)),Object.fromEntries(t)}function H(){for(let e of Object.values(M.value))e.$abort()}async function U(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(z(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value};{let e=r.value;return H(),{valid:(await Promise.allSettled(Object.values(M.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e,errors:T.$errors.value,issues:T.$issues.value}}}catch{return{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value}}finally{T.$localPending.value=!1}}let{$shortcuts:ee,$localPending:W,...G}=T,K=l({...G,...ee,$path:i,$initialValue:m,$originalValue:g,$fields:M,$reset:R,$touch:z,$validate:U,$unwatch:I,$watch:F,$clearExternalErrors:L,$extractDirtyFields:V,$abort:H,...o?{"~modifiers":T.$modifiers}:{},...he(U)});return v(()=>{for(let e of Object.keys(K).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete K[e];for(let e of Object.values(M.value))e?.$name&&Object.assign(K,{[e.$name]:e})}),K}function be({rulesDef:e,...n}){if(re(e,n.state,n.schemaMode))return ve({rulesDef:e,...n});if(ne(n.state,e)){if(V(n.state))return ye({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return ye({rulesDef:e,...a,state:r.fakeState})}}else if(ie(e))return ge({rulesDef:i(e.value)?e.value:e,...n})}var xe=`1.14.2`;function Se({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=Z(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),ne(a,i)?h.value=ye({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):ie(i)&&(h.value=ge({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch(),y?.(),v?.()}),l({regle:h})}function Ce({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s}){let c=i(n)?n:typeof n==`function`?void 0:e(()=>n),l={...a,...r},f,p=d(c??{});typeof n==`function`&&(f=v(()=>{p.value=n(t),m(p)}));let h=u(w(t.value)?{...C(t.value)}:C(t.value)),g=w(t.value)?{...C(t.value)}:C(t.value);return q(()=>{f?.()}),Se({scopeRules:p,state:t,options:l,initialState:h,originalState:g,customRules:o,shortcuts:s})}function we(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(t,a,o){return{r$:Ce({state:i(t)?t:u(t),rulesFactory:a,options:o,globalOptions:r,customRules:e,shortcuts:n}).regle}}return a}const Te=we();function Ee(){function e(e,t){return t}return e}const De=Ee();function Oe(e){let t={};if(Object.entries(e).some(([e,t])=>$(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&w(r)&&`$each`in r&&r.$each&&w(r.$each)?t[n]=[Oe(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=Oe(r):t[n]=null}return t}function ke(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o){let s=i(n)?n:typeof n==`function`?void 0:e(()=>n);return Ce({state:u(Oe(s?.value)),rulesFactory:s,options:o,globalOptions:a,customRules:t,shortcuts:r}).regle}return o}const Ae=ke();function je(e){if(k(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Me(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Me(n)}return Me(e)}function Me(e){return!D(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&O(e,Q.REGLE_STATIC,!0),e}function Ne({rules:e,modifiers:t,shortcuts:n}){let r=we(e,t,n),i=ke(e,t,n);return r.__config={rules:e,modifiers:t,shortcuts:n},i.__config={rules:e,modifiers:t,shortcuts:n},{useRegle:r,inferRules:Ee(),useRules:i}}function Pe(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=we(a,o,s);return c.__config={rules:a,modifiers:o,shortcuts:s},{useRegle:c,inferRules:Ee()}}function Fe(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),y=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),b=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function E(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}let D=l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:y,$anyEdited:b,$reset:S,$touch:C,$validate:E,$extractDirtyFields:w,$clearExternalErrors:T});return v(()=>{if(!r){for(let e of Object.keys(D).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete D[e];for(let[e,t]of Object.entries(x.value))Object.assign(D,{[e]:t})}}),D}function Ie(t,n){function r(r){let i=e(()=>p(r)),a=l({});c();let o=u(d(t.value)),s=l({r$:o});function c(){i.value&&(typeof i.value==`string`&&!t.value[i.value]?t.value[i.value]={}:Array.isArray(i.value)&&i.value.forEach(e=>{t.value[e]||(t.value[e]={})}))}_(i,c),_(t,e=>{o.value=d(e)},{deep:!0});function d(e){return i.value?typeof i.value==`string`?Fe(e[i.value]??{},!n.asRecord):(Object.keys(a).forEach(e=>{delete a[e]}),i.value.forEach(t=>{Object.entries(e[t]).forEach(([e,t])=>{Object.assign(a,{[e]:t})})}),Fe(a,!n.asRecord)):Fe(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Le(t,r){let i=r??Te;return{useScopedRegle:((r,a,o)=>{let{namespace:c,scopeKey:l,id:d,...f}=o??{};i.__config??={};let m=e(()=>d??l),h=e(()=>p(c)),g=u(`${Object.keys(t.value).length+1}-${K()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),q(b),_(h,(e,t)=>{b(t),x()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&b()});function b(e){let n=e??h.value;n?t.value[n]&&delete t.value[n][v.value]:t.value[`~~global`][v.value]&&delete t.value[`~~global`][v.value]}function x(){h.value?(t.value[h.value]||(t.value[h.value]={}),t.value[h.value][v.value]=y):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][v.value]=y)}return{r$:y,dispose:b,register:x}})}}function Re(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):J(()=>u({"~~global":{}})))(),{useScopedRegle:n}=Le(t,e?.customUseRegle),{useCollectScope:r}=Ie(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:ze,useScopedRegle:Be}=Re(),Ve=ze,He=Be;function Ue(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if($(t))return h(t._params?.[0])===i.value}})||r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function We(e,t,n){return!!e&&w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ge(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),We(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Ke(e){return e}function qe(e,t){return n=>T({...e},t(n))}const Je={install(e){e.provide(te,xe)}};export{F as InternalRuleType,Je as RegleVuePlugin,B as createRule,Re as createScopedUseRegle,Ue as createVariant,Ne as defineRegleConfig,Ke as defineRules,Pe as extendRegleConfig,fe as flatErrors,De as inferRules,je as markStatic,Fe as mergeRegles,We as narrowVariant,qe as refineRules,I as unwrapRuleParameters,Ve as useCollectScope,Te as useRegle,Se as useRootStorage,Ae as useRules,He as useScopedRegle,Ge as variantToRef};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.14.0",
3
+ "version": "1.14.2",
4
4
  "description": "Headless form validation library for Vue",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",