@regle/core 1.14.2 → 1.14.4

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.
@@ -468,37 +468,34 @@ type ScopedInstancesRecord = Record<string, Record<string, SuperCompatibleRegleR
468
468
  type ScopedInstancesRecordLike = Partial<ScopedInstancesRecord>;
469
469
  type PartialFormState<TState$1 extends Record<string, any>> = [unknown] extends [TState$1] ? {} : Prettify<{ [K in keyof TState$1 as ExtendOnlyRealRecord<TState$1[K]> extends true ? never : TState$1[K] extends Array<any> ? never : K]?: MaybeOutput<TState$1[K]> } & { [K in keyof TState$1 as ExtendOnlyRealRecord<TState$1[K]> extends true ? K : TState$1[K] extends Array<any> ? K : never]: NonNullable<TState$1[K]> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : PartialFormState<TState$1[K]> }>;
470
470
  type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules$1 extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = {
471
+ /** The result is invalid */
471
472
  valid: false;
473
+ /** Unsafe output data */
472
474
  data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Date | File ? MaybeOutput<Raw<Data>> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : MaybeOutput<Data> : unknown;
473
- } | {
474
- valid: true;
475
- data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules$1>[] : NonNullable<Data> extends Date | File ? SafeFieldProperty<Raw<NonNullable<Data>>, TRules$1> : NonNullable<Data> extends Record<string, any> ? DeepSafeFormState<NonNullable<Data>, TRules$1> : SafeFieldProperty<Data, TRules$1> : unknown;
476
- };
477
- type RegleNestedResult<Data extends Record<string, any> | unknown, TRules$1 extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = RegleResult<Data, TRules$1> & ({
478
- /**
479
- * The form contains validation errors, so the issues and errors will be populated.
480
- */
481
- valid: false;
482
475
  /**
483
476
  * Collection of all the error messages, collected for all children properties and nested forms.
484
477
  *
485
478
  * Only contains errors from properties where $dirty equals true.
486
479
  * */
487
- issues: RegleIssuesTree<Data>;
480
+ issues: DataTypeRegleIssues<Data, TRules$1>;
488
481
  /**
489
482
  * Collection of all the issues, collected for all children properties and nested forms.
490
483
  *
491
484
  * Only contains issues from properties where $dirty equals true.
492
485
  */
493
- errors: RegleErrorTree<Data>;
486
+ errors: DataTypeRegleErrors<Data>;
494
487
  } | {
495
- /**
496
- * The result is valid, so the issues and errors will be empty.
497
- */
488
+ /** The result is valid */
498
489
  valid: true;
490
+ /** Filtered type safe output data */
491
+ data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules$1>[] : NonNullable<Data> extends Date | File ? SafeFieldProperty<Raw<NonNullable<Data>>, TRules$1> : NonNullable<Data> extends Record<string, any> ? DeepSafeFormState<NonNullable<Data>, TRules$1> : SafeFieldProperty<Data, TRules$1> : unknown;
492
+ /** Empty object because the result is valid */
499
493
  issues: EmptyObject;
494
+ /** Empty object because the result is valid */
500
495
  errors: EmptyObject;
501
- });
496
+ };
497
+ type DataTypeRegleIssues<TData extends Record<string, any> | any[] | unknown, TRules$1 extends ReglePartialRuleTree<any> | RegleFormPropertyType<any> = never> = HasNamedKeys<TData> extends true ? NonNullable<TData> extends Array<infer U> ? isRecordLiteral<U> extends true ? RegleFieldIssue<TRules$1>[] : RegleCollectionErrors<TData, true> : isRecordLiteral<TData> extends true ? RegleIssuesTree<TData> : RegleFieldIssue<TRules$1>[] : RegleFieldIssue | RegleCollectionErrors<TData, true> | RegleIssuesTree<TData>;
498
+ type DataTypeRegleErrors<TData extends Record<string, any> | any[] | unknown> = HasNamedKeys<TData> extends true ? NonNullable<TData> extends Array<infer U> ? isRecordLiteral<U> extends true ? string[] : RegleCollectionErrors<TData> : isRecordLiteral<TData> extends true ? RegleErrorTree<TData> : string[] : string[] | RegleErrorTree<TData> | RegleCollectionErrors<TData>;
502
499
  type RegleCollectionResult<Data extends any[], TRules$1 extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = RegleResult<Data, TRules$1> & ({
503
500
  valid: false;
504
501
  issues: RegleCollectionErrors<Data, true>;
@@ -659,9 +656,6 @@ type InferValidOutput<TRegle extends MaybeRef<SuperCompatibleRegleRoot | SuperCo
659
656
  * Infer complete validation result from any `r$` instance
660
657
  */
661
658
  type InferRegleValidationResult<TRegle extends MaybeRef<SuperCompatibleRegleRoot | SuperCompatibleRegleFieldStatus>> = InferRegleSettings<TRegle> extends {
662
- state: infer TState;
663
- rules: infer TRules extends Record<string, any>;
664
- } ? RegleNestedResult<TState, TRules> : InferRegleSettings<TRegle> extends {
665
659
  state: infer TState;
666
660
  rules: never;
667
661
  } ? ({
@@ -669,11 +663,14 @@ type InferRegleValidationResult<TRegle extends MaybeRef<SuperCompatibleRegleRoot
669
663
  data: TState;
670
664
  } | {
671
665
  valid: false;
672
- data: TState;
666
+ data: DeepPartial<TState>;
673
667
  }) & {
674
- errors: RegleErrorTree<TState>[];
675
- issues: RegleIssuesTree<TState>;
676
- } : never;
668
+ errors: DataTypeRegleErrors<TState>;
669
+ issues: DataTypeRegleIssues<TState>;
670
+ } : InferRegleSettings<TRegle> extends {
671
+ state: infer TState;
672
+ rules: infer TRules extends Record<string, any>;
673
+ } ? RegleResult<TState, TRules> : never;
677
674
  /**
678
675
  * Infer State and Rules from any `r$` instance
679
676
  */
@@ -1003,7 +1000,7 @@ type RegleStatus<TState$1 extends Record<string, any> | undefined = Record<strin
1003
1000
  /** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
1004
1001
  $extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TState$1>;
1005
1002
  /** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
1006
- $validate: (forceValues?: JoinDiscriminatedUnions<TState$1> extends EmptyObject ? any : HasNamedKeys<JoinDiscriminatedUnions<TState$1>> extends true ? IsUnknown<JoinDiscriminatedUnions<TState$1>> extends true ? any : JoinDiscriminatedUnions<TState$1> : any) => Promise<RegleNestedResult<JoinDiscriminatedUnions<TState$1>, TRules$1>>;
1003
+ $validate: (forceValues?: JoinDiscriminatedUnions<TState$1> extends EmptyObject ? any : HasNamedKeys<JoinDiscriminatedUnions<TState$1>> extends true ? IsUnknown<JoinDiscriminatedUnions<TState$1>> extends true ? any : JoinDiscriminatedUnions<TState$1> : any) => Promise<RegleResult<JoinDiscriminatedUnions<TState$1>, TRules$1>>;
1007
1004
  } & ProcessNestedFields<TState$1, TRules$1, TShortcuts> & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> });
1008
1005
  /**
1009
1006
  * @internal
@@ -1340,7 +1337,7 @@ type SuperCompatibleRegleRoot = SuperCompatibleRegleStatus & {
1340
1337
  };
1341
1338
  type SuperCompatibleRegleResult = $InternalRegleResult;
1342
1339
  type SuperCompatibleRegleStatus = {
1343
- readonly $fields: {
1340
+ readonly $fields?: {
1344
1341
  [x: string]: any;
1345
1342
  };
1346
1343
  readonly $issues: Record<string, RegleValidationErrors<any, false, true>>;
@@ -1937,4 +1934,4 @@ declare function refineRules<TRules$1 extends RegleUnknownRulesTree, TRefinement
1937
1934
  * @see {@link https://reglejs.dev/introduction/devtools Documentation}
1938
1935
  */
1939
1936
  declare const RegleVuePlugin: Plugin;
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 };
1937
+ 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 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 };
@@ -1040,6 +1040,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
1040
1040
  let $unwatchRuleFieldValues;
1041
1041
  let $commit = () => {};
1042
1042
  let $validateAbortablePromise;
1043
+ let $setDirty = () => {};
1043
1044
  const $isDebouncing = ref(false);
1044
1045
  function createReactiveRulesResult() {
1045
1046
  const declaredRules = rulesDef.value;
@@ -1073,6 +1074,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
1073
1074
  $rules.value = Object.fromEntries(entries);
1074
1075
  scopeState.processShortcuts();
1075
1076
  define$commit();
1077
+ define$setDirty();
1076
1078
  if (storeResult?.valid != null) {
1077
1079
  scopeState.$dirty.value = storage.getDirtyState(cachePath);
1078
1080
  if (scopeState.$dirty.value && !scopeState.$silent.value || scopeState.$rewardEarly.value && scopeState.$error.value) $commit();
@@ -1083,6 +1085,14 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
1083
1085
  if (scopeState.$debounce.value > 0) $commit = debounce($commitHandler, scopeState.$debounce.value, { trackDebounceRef: $isDebouncing });
1084
1086
  else $commit = $commitHandler;
1085
1087
  }
1088
+ function define$setDirty() {
1089
+ if (scopeState.$debounce.value > 0) $setDirty = debounce(() => {
1090
+ scopeState.$dirty.value = true;
1091
+ }, scopeState.$debounce.value);
1092
+ else $setDirty = () => {
1093
+ scopeState.$dirty.value = true;
1094
+ };
1095
+ }
1086
1096
  function $unwatch() {
1087
1097
  if ($rules.value) for (const rule of Object.values($rules.value)) rule.$unwatch();
1088
1098
  $unwatchDirty();
@@ -1333,7 +1343,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
1333
1343
  function define$watchState() {
1334
1344
  $unwatchState = watch(state, () => {
1335
1345
  if (scopeState.$autoDirty.value && !scopeState.$silent.value) {
1336
- if (!scopeState.$dirty.value) scopeState.$dirty.value = true;
1346
+ if (!scopeState.$dirty.value) $setDirty();
1337
1347
  }
1338
1348
  if (rulesDef.value instanceof Function) createReactiveRulesResult();
1339
1349
  if (!scopeState.$silent.value || scopeState.$rewardEarly.value && scopeState.$error.value) $commit();
@@ -1382,7 +1392,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
1382
1392
  if ($validateAbortablePromise) $validateAbortablePromise.abort();
1383
1393
  }
1384
1394
  function $touch(runCommit = true, withConditions = false) {
1385
- if (!scopeState.$dirty.value) scopeState.$dirty.value = true;
1395
+ if (!scopeState.$dirty.value) $setDirty();
1386
1396
  if (withConditions && runCommit) {
1387
1397
  if (!scopeState.$silent.value || scopeState.$rewardEarly.value && scopeState.$error.value) {
1388
1398
  abortCommit();
@@ -2532,9 +2542,9 @@ function useRegleDevtoolsRegistry() {
2532
2542
  notifyDevtools();
2533
2543
  return id;
2534
2544
  }
2535
- function notifyDevtools() {
2545
+ const notifyDevtools = debounce(() => {
2536
2546
  if (devtoolsApi.value) emitInspectorState(devtoolsApi.value);
2537
- }
2547
+ }, 100);
2538
2548
  function unregister(id) {
2539
2549
  instances.value.delete(id);
2540
2550
  const watcher = watchers.value.get(id);
@@ -3043,7 +3053,7 @@ function filterInspectorTree(nodes, filter) {
3043
3053
  return filtered;
3044
3054
  }
3045
3055
 
3046
- var version$1 = "1.14.2";
3056
+ var version$1 = "1.14.4";
3047
3057
 
3048
3058
  function createDevtools(app) {
3049
3059
  setupDevtoolsPlugin({
@@ -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.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};
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 W(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 G=W(g,`3.5.0`)!==-1;function K(){return Math.floor(Math.random()*Date.now()).toString()}function q(){return typeof window>`u`?K():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function J(e){return r()?(c(e),!0):!1}function ee(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=()=>{},H=u(!1);function U(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Z.value=s,J();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:Z.value.$debounce})])}X.value=Object.fromEntries(u),k.processShortcuts(),W(),K(),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 W(){z=k.$debounce.value>0?j(Y,k.$debounce.value,{trackDebounceRef:H}):Y}function K(){V=k.$debounce.value>0?j(()=>{k.$dirty.value=!0},k.$debounce.value):()=>{k.$dirty.value=!0}}function q(){if(X.value)for(let e of Object.values(X.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 J(){if(X.value)for(let e of Object.values(X.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(()=>Z.value.$debounce==null?k.$haveAnyAsyncRule.value?200:0:Z.value.$debounce),_=e(()=>Z.value.$deepCompare==null?!1:Z.value.$deepCompare),y=e(()=>Z.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):Z.value.$lazy),C=e(()=>Z.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Z.value.$rewardEarly),w=e(()=>Z.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!T.value:h(d.clearExternalErrorsOnChange):Z.value.$clearExternalErrorsOnChange),T=e(()=>C.value?!0:Z.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Z.value.$silent),D=e(()=>Z.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Z.value.$autoDirty),O=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),j=e({get:()=>n.value,set(e){F(),n.value=e,ee()}}),P=e(()=>H.value?K.value&&i.value:K.value&&!G.value&&i.value),I=e(()=>le({field:{$rules:X.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value}})),L=e(()=>le({field:{$rules:X.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,Z.value.$deepCompare):S.value!==n.value:!1),V=e(()=>B.value),U=e(()=>ue({field:{$rules:X.value}})),W=e(()=>!(K.value||G.value)),G=e(()=>a.value||!C.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),K=e(()=>p?.value?.length||m?.value?.length?!0:J.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),q=e(()=>s??d.id??`root`),J=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Y=e(()=>{if(p?.value?.length||J.value||H.value)return!1;if(i.value&&!b(n.value)&&!O.value&&!G.value){if(g)return!m?.value?.length;{let e=Object.values(X.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(X.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:X,$error:P,$pending:G,$invalid:K,$correct:Y,$errors:R,$ready:W,$silentErrors:z,$anyDirty:o,$tooltips:U,$name:q,$inactive:J,$edited:B,$anyEdited:V}))}),e}),N.push(a)})}let re={};return{$error:P,$pending:G,$invalid:K,$correct:Y,$debounce:f,$deepCompare:_,$lazy:y,$ready:W,$issues:I,$silentIssues:L,$errors:R,$silentErrors:z,$rewardEarly:C,$autoDirty:D,$silent:T,$clearExternalErrorsOnChange:w,$anyDirty:o,$edited:B,$anyEdited:V,$name:q,$haveAnyAsyncRule:te,$shortcuts:re,$validating:O,$tooltips:U,$dirty:i,processShortcuts:ne,$silentValue:j,$inactive:J,$modifiers:Q,$isArrayOrRegleStatic:c}}),ee(),I=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),R=_([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(X.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,W)}function ee(){F=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||V()),r.value instanceof Function&&U(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z(),k.$clearExternalErrorsOnChange.value&&se()},{deep:k.$isArrayOrRegleStatic.value?!0:G?1:!0})}async function Y(){try{let{promise:e}=ne(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=u({}),Z=u({});U();function te(e,t){if(Q(),se(),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&&se(),!t&&!e?.keepValidationState)for(let e of Object.values(X.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(X.value))e.$parse()}function Q(){`cancel`in z&&z.cancel()}function ne(e){return B&&B.abort(),B=P(e),B}function re(){Q(),B&&B.abort()}function ie(e=!0,t=!1){k.$dirty.value||V(),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Q(),z()):e&&(Q(),z())}async function $(e){try{if(e&&(n.value=e),g)return D?(ie(!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&&!H.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(X.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};re();let{promise:r}=ne(Promise.allSettled(Object.values(X.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 ae(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function se(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&Y();let{$shortcuts:ce,$validating:de,$autoDirty:fe,$rewardEarly:pe,$clearExternalErrorsOnChange:ge,$haveAnyAsyncRule:_e,$debounce:ve,$lazy:ye,...be}=k;return l({...be,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:X,...ce,$path:a,$isDebouncing:H,$reset:te,$touch:ie,$validate:$,$unwatch:q,$watch:J,$extractDirtyFields:ae,$clearExternalErrors:se,$abort:re,$schemaMode:g,"~modifiers":k.$modifiers,...he($)})}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??q(),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=q(),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:G?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 W(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&&ee(),e?.keepValidationState||(P.value.$reset(e,t),F.value.forEach(t=>{t.$reset(e,!0)})),t||I()}function K(){P.value.$abort(),F.value.forEach(e=>{e.$abort()})}async function J(e){e&&(n.value=e);let t=n.value;try{return K(),{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 ee(){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:J,$unwatch:V,$watch:B,$touch:U,$reset:W,$abort:K,$extractDirtyFields:Y,$clearExternalErrors:ee,"~modifiers":T.$modifiers,...he(J)})}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:W,$localPending:G,...K}=T,q=l({...K,...W,$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(q).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete q[e];for(let e of Object.values(M.value))e?.$name&&Object.assign(q,{[e.$name]:e})}),q}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.4`;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 J(()=>{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}-${q()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),J(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):ee(()=>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.2",
3
+ "version": "1.14.4",
4
4
  "description": "Headless form validation library for Vue",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",