@regle/core 1.18.2-beta.2 → 1.18.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @regle/core v1.18.2-beta.2
2
+ * @regle/core v1.18.3
3
3
  * (c) 2026 Victor Garcia
4
4
  * @license MIT
5
5
  */
@@ -302,7 +302,13 @@ type NarrowVariant<TRoot extends {
302
302
  type MaybeVariantStatus<TState extends Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = IsUnion<NonNullable<TState>> extends true ? IsUnion<TRules> extends true ? Omit<RegleStatus<TState, TRules, TShortcuts>, '$fields'> & {
303
303
  $fields: ProcessChildrenFields<TState, TRules, TShortcuts>[keyof ProcessChildrenFields<TState, TRules, TShortcuts>];
304
304
  } & (HasNamedKeys<TState> extends true ? ProcessChildrenFields<TState, TRules, TShortcuts>[keyof ProcessChildrenFields<TState, TRules, TShortcuts>] : {}) : RegleStatus<JoinDiscriminatedUnions<TState>, TRules extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<TState>>> ? TRules : EmptyObject, TShortcuts> : RegleStatus<TState, TRules, TShortcuts>;
305
- type ProcessChildrenFields<TState extends Record<string, any> | undefined, TRules extends ReglePartialRuleTree<NonNullable<TState>>, TShortcuts extends RegleShortcutDefinition = {}> = { [TIndex in keyof TupleToPlainObj<UnionToTuple<TState>>]: TIndex extends `${infer TIndexInt extends number}` ? { [TKey in keyof UnionToTuple<TState>[TIndexInt] as IsEmptyObject<FindCorrespondingVariant<UnionToTuple<TState>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState>[TIndexInt] : never, UnionToTuple<TRules>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject> extends true ? TKey extends keyof TState ? TState[TKey] extends NonNullable<TState[TKey]> ? TKey : never : never : TKey]-?: InferRegleStatusType<FindCorrespondingVariant<UnionToTuple<TState>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState>[TIndexInt] : never, UnionToTuple<TRules>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject, NonNullable<UnionToTuple<TState>[TIndexInt]>, TKey, TShortcuts> } & { [TKey in keyof UnionToTuple<TState>[TIndexInt] as IsEmptyObject<FindCorrespondingVariant<UnionToTuple<TState>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState>[TIndexInt] : never, UnionToTuple<TRules>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject> extends true ? TKey extends keyof TState ? TState[TKey] extends NonNullable<TState[TKey]> ? never : TKey : TKey : never]?: InferRegleStatusType<FindCorrespondingVariant<UnionToTuple<TState>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState>[TIndexInt] : never, UnionToTuple<TRules>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject, NonNullable<UnionToTuple<TState>[TIndexInt]>, TKey, TShortcuts> } : {} };
305
+ /** Helper type to extract state tuple item at index */
306
+ type StateTupleItem<TState, TIndexInt extends number> = UnionToTuple<TState>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState>[TIndexInt] : never;
307
+ /** Helper type to extract NonNullable state tuple item */
308
+ type NonNullableStateTupleItem<TState, TIndexInt extends number> = NonNullable<StateTupleItem<TState, TIndexInt>>;
309
+ /** Helper type to find the corresponding variant rule */
310
+ type VariantRuleForKey<TState, TRules, TIndexInt extends number, TKey> = FindCorrespondingVariant<StateTupleItem<TState, TIndexInt>, UnionToTuple<TRules>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject;
311
+ type ProcessChildrenFields<TState extends Record<string, any> | undefined, TRules extends ReglePartialRuleTree<NonNullable<TState>>, TShortcuts extends RegleShortcutDefinition = {}> = { [TIndex in keyof TupleToPlainObj<UnionToTuple<TState>>]: TIndex extends `${infer TIndexInt extends number}` ? { [TKey in keyof UnionToTuple<TState>[TIndexInt] as IsEmptyObject<VariantRuleForKey<TState, TRules, TIndexInt, TKey>> extends true ? TKey extends keyof TState ? TState[TKey] extends NonNullable<TState[TKey]> ? TKey : never : never : TKey]-?: InferRegleStatusType<VariantRuleForKey<TState, TRules, TIndexInt, TKey>, NonNullableStateTupleItem<TState, TIndexInt>, TKey, TShortcuts> } & { [TKey in keyof UnionToTuple<TState>[TIndexInt] as IsEmptyObject<VariantRuleForKey<TState, TRules, TIndexInt, TKey>> extends true ? TKey extends keyof TState ? TState[TKey] extends NonNullable<TState[TKey]> ? never : TKey : TKey : never]?: InferRegleStatusType<VariantRuleForKey<TState, TRules, TIndexInt, TKey>, NonNullableStateTupleItem<TState, TIndexInt>, TKey, TShortcuts> } : {} };
306
312
  type FindCorrespondingVariant<TState extends Record<string, any>, TRules extends any[]> = TRules extends [infer F, ...infer R] ? F extends ReglePartialRuleTree<TState> ? [F] : FindCorrespondingVariant<TState, R> : [];
307
313
  type PossibleLiteralTypes<T extends Record<string, any>, TKey extends keyof T> = unknown extends T[TKey] ? {
308
314
  [x: string]: { [K in TKey]-?: Omit<RegleRuleDecl<any, Partial<ExtendedRulesDeclarations>>, 'literal'> & {
@@ -1221,8 +1227,12 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
1221
1227
  readonly $schemaMode?: boolean;
1222
1228
  readonly '~modifiers'?: FieldRegleBehaviourOptions;
1223
1229
  $extractDirtyFields: (filterNullishValues?: boolean) => any;
1224
- $validate: (forceValues?: any) => Promise<$InternalRegleResult>;
1225
- $validateSync: (forceValues?: any) => boolean;
1230
+ $validate: (forceValues?: unknown) => Promise<$InternalRegleResult>;
1231
+ /**
1232
+ * Validates the field synchronously without waiting for async rules.
1233
+ * @internal
1234
+ */
1235
+ $validateSync: (forceValues?: unknown) => boolean;
1226
1236
  }
1227
1237
  /**
1228
1238
  * @public
@@ -1278,9 +1288,40 @@ interface RegleCommonStatus<TValue = any, TRules extends Record<string, any> = n
1278
1288
  */
1279
1289
  readonly $originalValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
1280
1290
  /**
1281
- * Validate the field synchronously. Avoiding async rules.
1291
+ * Validates the field synchronously without waiting for async rules.
1292
+ *
1293
+ * This method provides immediate validation feedback by running only synchronous rules.
1294
+ * Async rules are skipped and assumed to be valid. Unlike `$validate`, this method:
1295
+ * - Does NOT wait for async validation results
1296
+ * - Returns a boolean directly instead of a Promise
1297
+ *
1298
+ * Use this when you need immediate validation feedback without side effects,
1299
+ * such as for real-time UI feedback or form gating logic.
1300
+ *
1301
+ * @param forceValues - Optional values to set before validating. Note that due to Vue's
1302
+ * reactivity system, you may need to wait for `nextTick()` after
1303
+ * setting values for rules to recalculate.
1304
+ * @returns `true` if all synchronous rules pass, `false` otherwise.
1305
+ * Always returns `false` in schema mode.
1306
+ *
1307
+ * @example
1308
+ * ```ts
1309
+ * // Basic usage
1310
+ * const isValid = r$.$validateSync();
1311
+ *
1312
+ * // Field-level validation
1313
+ * const isEmailValid = r$.email.$validateSync();
1314
+ *
1315
+ * // Use with form submission gating
1316
+ * function handleSubmit() {
1317
+ * if (r$.$validateSync()) {
1318
+ * // Proceed with submission
1319
+ * }
1320
+ * }
1321
+ * ```
1322
+ *
1282
1323
  */
1283
- $validateSync: (forceValues?: any) => boolean;
1324
+ $validateSync: (forceValues?: unknown) => boolean;
1284
1325
  /** Marks the field and all nested properties as $dirty. */
1285
1326
  $touch(): void;
1286
1327
  /**
@@ -1311,8 +1352,20 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
1311
1352
  readonly $valid: boolean; /** If the rule is async, indicates if it's currently pending. Always false if it's synchronous. */
1312
1353
  readonly $pending: boolean; /** Returns the current path of the rule (used internally for tracking) */
1313
1354
  readonly $path: string; /** Contains the metadata returned by the validator function. */
1314
- readonly $metadata: TMetadata extends boolean ? TMetadata : Omit<TMetadata, '$valid'>; /** Run the rule validator and compute its properties like $message and $active */
1315
- $parse(): Promise<boolean>; /** Run only the rule validator if it's sync */
1355
+ readonly $metadata: TMetadata extends boolean ? TMetadata : Omit<TMetadata, '$valid'>;
1356
+ /**
1357
+ * Run the rule validator asynchronously and compute its properties like `$message` and `$active`.
1358
+ * @returns A promise that resolves to `true` if the rule passes, `false` otherwise.
1359
+ */
1360
+ $parse(): Promise<boolean>;
1361
+ /**
1362
+ * Run only the rule validator synchronously, skipping async rules.
1363
+ *
1364
+ * If the rule is async, this method returns `true` (assumes valid) since it cannot
1365
+ * wait for the async result. Use `$parse()` for async rules.
1366
+ *
1367
+ * @returns `true` if the sync rule passes or if the rule is async, `false` otherwise.
1368
+ */
1316
1369
  $parseSync(): boolean; /** Reset the $valid, $metadata and $pending states */
1317
1370
  $reset(): void; /** Returns the original rule validator function. */
1318
1371
  $validator: ((value: IsUnknown<TValue> extends true ? any : MaybeInput<TValue>, ...args: any[]) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>) & ((value: IsUnknown<TValue> extends true ? any : TValue, ...args: [TParams] extends [never[]] ? [] : [unknown[]] extends [TParams] ? any[] : TParams) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>);
@@ -1345,7 +1398,12 @@ interface $InternalRegleRuleStatus {
1345
1398
  $fieldError: boolean;
1346
1399
  $maybePending: boolean;
1347
1400
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
1401
+ /** @internal */
1348
1402
  $parse(): Promise<boolean>;
1403
+ /**
1404
+ * Run only the rule validator synchronously. Returns `true` for async rules.
1405
+ * @internal
1406
+ */
1349
1407
  $parseSync(): boolean;
1350
1408
  $reset(): void;
1351
1409
  $unwatch(): void;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @regle/core v1.18.2-beta.2
2
+ * @regle/core v1.18.3
3
3
  * (c) 2026 Victor Garcia
4
4
  * @license MIT
5
5
  */
@@ -981,6 +981,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
981
981
  return ruleResult;
982
982
  }
983
983
  function computeSyncResult(validator, logWarning = true) {
984
+ if (isRuleDef(rule.value) && rule.value._async) return true;
984
985
  const resultOrPromise = validator(state.value, ...scopeState.$params.value);
985
986
  if (resultOrPromise instanceof Promise) {
986
987
  if (logWarning) console.warn("You used a async validator function on a non-async rule, please use \"async await\" or the \"withAsync\" helper");
@@ -1014,6 +1015,11 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
1014
1015
  $maybePending.value = false;
1015
1016
  }
1016
1017
  }
1018
+ /**
1019
+ * Runs the rule validator synchronously.
1020
+ * If the rule is async, returns true (assumes valid) since it cannot wait.
1021
+ * @returns true if the sync rule passes or rule is async, false otherwise
1022
+ */
1017
1023
  function $parseSync() {
1018
1024
  try {
1019
1025
  $validating.value = true;
@@ -1500,9 +1506,16 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
1500
1506
  };
1501
1507
  }
1502
1508
  }
1509
+ /**
1510
+ * Validates the field synchronously by running $parseSync on all rules.
1511
+ * Async rules are skipped and assumed valid.
1512
+ * @param forceValues - Optional value to set before validating
1513
+ * @returns true if all sync rules pass, false if any fail or in schema mode
1514
+ */
1503
1515
  function $validateSync(forceValues) {
1504
1516
  try {
1505
1517
  if (forceValues) state.value = forceValues;
1518
+ if (!scopeState.$dirty.value) scopeState.$dirty.value = true;
1506
1519
  if (schemaMode) return false;
1507
1520
  return Object.values($rules.value).map((rule) => rule.$parseSync()).every((result) => !!result);
1508
1521
  } catch {
@@ -1966,6 +1979,12 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
1966
1979
  };
1967
1980
  }
1968
1981
  }
1982
+ /**
1983
+ * Validates the collection and all its items synchronously.
1984
+ * Validates both $self rules and each item's rules.
1985
+ * @param forceValues - Optional array value to set before validating
1986
+ * @returns true if all sync rules pass for $self and all items, false otherwise
1987
+ */
1969
1988
  function $validateSync(forceValues) {
1970
1989
  if (forceValues) state.value = forceValues;
1971
1990
  try {
@@ -2468,10 +2487,16 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
2468
2487
  scopeState.$localPending.value = false;
2469
2488
  }
2470
2489
  }
2490
+ /**
2491
+ * Validates all fields synchronously without waiting for async rules.
2492
+ * Unlike $validate, this method does NOT touch fields.
2493
+ * @param forceValues - Optional values to set before validating
2494
+ * @returns true if all sync rules pass, false otherwise
2495
+ */
2471
2496
  function $validateSync(forceValues) {
2472
2497
  try {
2473
2498
  if (forceValues) state.value = forceValues;
2474
- return Object.values($fields.value).map((field) => field.$validateSync()).every((result) => !!result);
2499
+ return [...Object.values($fields.value).map((statusOrField) => statusOrField.$validateSync()), ...$selfStatus.value ? [$selfStatus.value?.$validateSync()] : []].every((result) => !!result);
2475
2500
  } catch {
2476
2501
  return false;
2477
2502
  }
@@ -3182,7 +3207,7 @@ function filterInspectorTree(nodes, filter) {
3182
3207
  return filtered;
3183
3208
  }
3184
3209
 
3185
- var version$1 = "1.18.2-beta.2";
3210
+ var version$1 = "1.18.3";
3186
3211
 
3187
3212
  function createDevtools(app) {
3188
3213
  setupDevtoolsPlugin({
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @regle/core v1.18.2-beta.2
2
+ * @regle/core v1.18.3
3
3
  * (c) 2026 Victor Garcia
4
4
  * @license MIT
5
5
  */
6
6
 
7
- 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`}function b(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function x(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function S(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 C(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 w(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function E(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function D(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:b(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const O=Symbol(`regle-rule`);function k(e){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 A(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=>A(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[A(e[0]),A(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,k(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=A(e[r],t++);return n}function j(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 M(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 N(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(!N(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(b(e)&&b(t)&&s&&(r||!r&&n)&&!N(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var P=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function F(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new P)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const I={Inline:`__inline`,Async:`__async`};function L(e){try{return e.map(e=>p(e))}catch{return[]}}function R(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function z(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 B(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===I.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...L(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:L(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:L(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:L(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...L(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:R(t),_brand:O})}function V(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=B({...e,async:n},...t);if(z(e.validator)>1){let t=function(...t){return B(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 H(e){return b(e.value)}function U(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const W={LessThan:-1,EqualTo:0,GreaterThan:1};function G(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 W.GreaterThan;if(i>t)return W.LessThan;if(!isNaN(t)&&isNaN(i))return W.GreaterThan;if(isNaN(t)&&!isNaN(i))return W.LessThan}return W.EqualTo}const ee=G(g,`3.5.0`)!==-1;function te(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?te():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=L(i._params),n=L(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 ne=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function re(e,t){return!se(e.value)&&(H(e)||b(t.value)&&!D(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function ie(e,t){return!!e.value&&b(e.value)&&`$each`in e.value||Array.isArray(t.value)}function ae(e){return!!e.value&&(b(e.value)||H(e.value))}function $(e){return(b(e)||typeof e==`function`)&&`_validator`in e}function oe(e){return typeof e.value==`function`?`_validator`in e.value:!0}function se(e){return b(e)&&w(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function ce(e){return b(e)&&`$fields`in e}function le(e){return!!e&&`$rules`in e}function ue({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 de({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 fe(e){return b(e)&&`$each`in e}function pe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!b(e)))return e;if(fe(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>me(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>me(t,n,[e])).flat()}function me(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!b(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(fe(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>me(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>me(n,t,r?.concat(e))).flat()}function he({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:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){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:S.value,...b.value})),p=e(()=>{try{return oe(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),oe(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 D(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>oe(r)&&r.value.type?r.value.type:i),x=e(()=>oe(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:L(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$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()},{deep:ee?1:!0})}S();function C(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function w(){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;C();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,b.value=n}}catch{e=!1}finally{v.value=!1}return e}function T(e,t=!0){let n=e(a.value,...p.$params.value);if(n instanceof Promise)return!0;if(n!=null){if(typeof n==`boolean`)return n;{let{$valid:e,...t}=n;return b.value=t,e}}return!0}async function E(){try{x.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await w();else{let t=p.$validator.value;e=T(t)}return y.value=e,e}catch{return!1}finally{x.value=!1,g.value=!1}}function O(){try{return x.value=!0,T(p.$validator.value)}catch{return!1}finally{x.value=!1}}function k(){y.value=!0,b.value={},v.value=!1,x.value=!1,S()}function A(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:E,$parseSync:O,$unwatch:A,$watch:S,$reset:k})}function ge(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:pe(i,{includePath:!0})}}}}}function _e({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:C,shortcuts:w,overrides:T,onValidate:E}){let O=t(),k,P=[],I,L,R,z,B=()=>{},V,H=()=>{},U=u(!1);function W(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Z.value=s,q();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,he({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(),G(),te(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B()),c.addRuleDeclEntry(o,e)}function G(){B=k.$debounce.value>0?M(Y,k.$debounce.value,{trackDebounceRef:U}):Y}function te(){H=k.$debounce.value>0?M(()=>{k.$dirty.value=!0},k.$debounce.value):()=>{k.$dirty.value=!0}}function K(){if(X.value)for(let e of Object.values(X.value))e.$unwatch();L(),z?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),I?.(),O.stop(),O=t();for(let e of P)e.stop();P=[],y?.(),R?.()}function q(){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||se(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),b=e(()=>Z.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:h(d.immediateDirty):Z.value.$immediateDirty),C=e(()=>Z.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Z.value.$rewardEarly),E=e(()=>Z.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!O.value:h(d.clearExternalErrorsOnChange):Z.value.$clearExternalErrorsOnChange),O=e(()=>C.value?!0:Z.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Z.value.$silent),A=e(()=>Z.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Z.value.$autoDirty),M=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),F=e({get:()=>n.value,set(e){I(),n.value=e,J()}}),L=e(()=>U.value?q.value&&i.value:q.value&&!K.value&&i.value),R=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value}})),z=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value},silent:!0})),B=e(()=>R.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=u(!1);function W(e,t){return t instanceof Date&&e instanceof Date?j(t).getDate()!==j(e).getDate():t==null?!!e:Array.isArray(e)&&Array.isArray(t)?!N(e,t,Z.value.$deepCompare):t!==e}v(()=>{i.value?Z.value.$isEdited?H.value=Z.value.$isEdited(n.value,S.value,W):T?.isEdited?H.value=T.isEdited(n.value,S.value,W):H.value=W(n.value,S.value):H.value=!1});let G=e(()=>H.value),ee=e(()=>de({field:{$rules:X.value}})),te=e(()=>!(q.value||K.value)),K=e(()=>a.value||!C.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),q=e(()=>p?.value?.length||m?.value?.length?!0:ne.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),Y=e(()=>s??d.id??`root`),ne=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Q=e(()=>{if(p?.value?.length||ne.value||U.value)return!1;if(i.value&&!D(n.value)&&!M.value&&!K.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}),re=e(()=>Object.values(X.value).some(e=>e.$haveAsync)),ie=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:A.value,$silent:O.value,$clearExternalErrorsOnChange:E.value}));function ae(){w?.fields&&Object.entries(w.fields).forEach(([e,r])=>{let a=t();$[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:F,$rules:X,$error:L,$pending:K,$invalid:q,$correct:Q,$errors:B,$ready:te,$silentErrors:V,$anyDirty:o,$tooltips:ee,$name:Y,$inactive:ne,$edited:H,$anyEdited:G}))}),e}),P.push(a)})}let $={};return{$error:L,$pending:K,$invalid:q,$correct:Q,$debounce:f,$deepCompare:_,$lazy:y,$immediateDirty:b,$ready:te,$issues:R,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:C,$autoDirty:A,$silent:O,$clearExternalErrorsOnChange:E,$anyDirty:o,$edited:H,$anyEdited:G,$name:Y,$haveAnyAsyncRule:re,$shortcuts:$,$validating:M,$tooltips:ee,$dirty:i,processShortcuts:ae,$silentValue:F,$inactive:ne,$modifiers:ie,$isArrayOrRegleStatic:c}}),J(),L=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),z=_([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})}),R=_(k.$haveAnyAsyncRule,G)}function J(){I=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||H()),r.value instanceof Function&&W(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B(),k.$clearExternalErrorsOnChange.value&&le()},{deep:k.$isArrayOrRegleStatic.value?!0:ee?1:!0})}async function Y(){try{let{promise:e}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=u({}),Z=u({});W();function ne(e,t){if(Q(),le(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=A(C),S.value=A(C);else if(e?.toInitialState)n.value=A(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=A(t),n.value=A(t)}else S.value=b(n.value)&&!se(n.value)?A(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&le(),!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 B&&B.cancel()}function re(e){return V&&V.abort(),V=F(e),V}function ie(){Q(),V&&V.abort()}function ae(e=!0,t=!1){k.$dirty.value||H(),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Q(),B()):e&&(Q(),B())}async function $(e){try{if(e&&(n.value=e),g)return E?(ae(!1),E()):{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&&!U.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(D(X.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};ie();let{promise:r}=re(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 oe(e){try{return e&&(n.value=e),g?!1:Object.values(X.value).map(e=>e.$parseSync()).every(e=>!!e)}catch{return!1}}function ce(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function le(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&Y(),k.$immediateDirty.value&&(k.$dirty.value=!0);let{$shortcuts:fe,$validating:pe,$autoDirty:me,$rewardEarly:_e,$clearExternalErrorsOnChange:ve,$haveAnyAsyncRule:ye,$debounce:be,$lazy:xe,...Se}=k;return l({...Se,$externalErrors:p,$value:n,$initialValue:S,$originalValue:C,$rules:X,...fe,$path:a,$isDebouncing:U,$reset:ne,$touch:ae,$validate:$,$validateSync:oe,$unwatch:K,$watch:q,$extractDirtyFields:ce,$clearExternalErrors:le,$abort:ie,$schemaMode:g,"~modifiers":k.$modifiers,...ge($)})}function ve({$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:_,overrides:v}){let y=s.value?.$id??l.$key??K(),x=`${r}.${String(y)}`,S=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:y,enumerable:!1,configurable:!1,writable:!1}}));let C=f(u?.value??[],i),w=e(()=>d?.value?.[i]),T=xe({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:S,cachePath:x,storage:o,options:a,externalErrors:C,schemaErrors:w,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v});return T&&(T.$id=s.value?.$id??String(y),o.addArrayStatus(t,T.$id,T)),s.value&&(!b(s.value)||se(s.value))&&_&&T?.$touch(),T}function ye({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:b,fieldName:x,overrides:S}){let C=t(),w,T=t(),E,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),j=u(n.value),M=u({}),N,P,F=u({}),I=s.getCollectionsEntry(a);E=T.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)})),L(),V();function L(){M.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)),j.value=F.value.$value,Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)?I.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=U(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 ve({$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:b,fieldName:x,schemaMode:m,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=_e({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:b,fieldName:x,schemaMode:m,overrides:S})}function R(){if(Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)){let t=A(I.value);I.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&I.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}=U(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return ve({$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:b,fieldName:x,schemaMode:m,overrides:S})||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 I.value=[]}function z(){N=_(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?L():R(),B()},{deep:ee?1:!0,flush:`pre`}),B()}function B(){P=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),C=t(),w=C.run(()=>{let r=e({get:()=>n.value,set(e){N?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),d=e(()=>(m?F.value.$correct:D(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),S=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),C=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),w=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),T=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),E=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),k=e(()=>M.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):M.value.$rewardEarly),A=e(()=>k.value?!0:M.value.$silent==null?h(c.silent)==null?!1:h(c.silent):M.value.$silent),j=e(()=>M.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):M.value.$autoDirty),L=e(()=>x??c.id??`root`),R=e(()=>({$deepCompare:M.value.$deepCompare??!1,$lazy:M.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:j.value,$silent:A.value,$clearExternalErrorsOnChange:M.value.$clearExternalErrorsOnChange??!1}));function B(){b?.collections&&Object.entries(b?.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:T,$silentErrors:E,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:I,$self:F,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:k,$silent:A,$autoDirty:j,$issues:w,$modifiers:R}}),E.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 H(){N?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),C.stop(),C=t(),T.stop(),T=t(!0),O.forEach(e=>e.stop()),O=[]}function W(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function G(e,t){if(H(),!t)if(e?.toOriginalState)n.value=A(y),g.value=A(y);else if(e?.toInitialState)n.value=A(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=A(t),n.value=A(t)}else g.value=A(n.value);e?.clearExternalErrors&&Y(),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||L()}function te(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function q(e){e&&(n.value=e);let t=n.value;try{return te(),{valid:(await Promise.allSettled([F.value.$validate(e),...I.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function J(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function Y(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function X(e=!0){let t=I.value.map(t=>{if(ce(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>D(e))&&(t=[]),t}let{$shortcuts:Z,...ne}=w;return l({$self:F,...ne,...Z,$path:a,$each:I,$value:n,$initialValue:g,$originalValue:y,$validate:q,$validateSync:J,$unwatch:H,$watch:V,$touch:W,$reset:G,$abort:te,$extractDirtyFields:X,$clearExternalErrors:Y,"~modifiers":w.$modifiers,...ge(q)})}function be({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(),C,w=[],T=null,E=null,O=null,k=null,j=u(void 0);async function M(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),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,xe({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,xe({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,xe({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,xe({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})]}));P.value={...l,...u,...d,...p},t&&L()}function N(){n.value.$self&&(j.value=_e({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:u(void 0),schemaErrors:u(void 0),initialState:f(m?.value??{},`$self`),originalState:g?.$self,fieldName:`$self`,...x}))}let P=x.storage.getFieldsEntry(a);M(),N();function F(){s&&(O=_(s,()=>{R(),M()},{deep:!0}))}function I(){k=_(r,()=>{R(),M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(T?.(),T=_(o,()=>{R(),M()},{deep:!0,flush:`pre`}),F()),d&&(E?.(),E=_(d,()=>{R(),M()},{deep:!0,flush:`post`})),I(),C=S.run(()=>{let a=e({get:()=>r.value,set(e){R(),r.value=e,M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)}}),o=e({get:()=>r.value,set(e){R(),r.value=e,M()}}),s=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),d=e(()=>{if(j.value?.$invalid)return!0;let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),f=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!le(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!D(n.value.$self);if(e.length||t){let t=j.value?.$correct??!0,n=!1;return n=x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>le(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),_=e(()=>{if(j.value?.$error)return!0;let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),b=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),S=e(()=>h(x.options.silent)==null?!!b.value:h(x.options.silent)),T=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),E=e(()=>!(d.value||k.value)),O=u(!1),k=e(()=>{if(j.value?.$pending||O.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),A=e(()=>{let e={...j.value&&{$self:j.value?.$issues??[]}};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),N=e(()=>{let e={...j.value&&{$self:j.value?.$errors??[]}};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),F=e(()=>{let e={...j.value&&{$self:j.value?.$silentErrors??[]}};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),I=e(()=>{if(j.value?.$edited)return!0;if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),L=e(()=>{if(j.value?.$anyEdited)return!0;for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),z=e(()=>y??x.options.id??`root`),B=e(()=>({autoDirty:T.value,lazy:h(x.options.lazy)??!1,rewardEarly:b.value,silent:S.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function H(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let a=t();W[e]=a.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:s,$path:i,$value:r,$silentValue:o,$error:_,$originalValue:g,$pending:k,$invalid:d,$correct:f,$ready:E,$anyDirty:c,$name:z,$silentErrors:F,$initialValue:m,$errors:N,$fields:P,$edited:I,$anyEdited:L,$issues:A,$self:j,"~modifiers":h(x.options)}))}),e}),w.push(a)})}let U=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.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(){}}),W={};return H(),{$dirty:s,$anyDirty:c,$invalid:d,$correct:f,$error:_,$pending:k,$issues:A,$errors:N,$silentErrors:F,$ready:E,$name:z,$shortcuts:W,$groups:U,$silentValue:o,$edited:I,$anyEdited:L,$localPending:O,$autoDirty:T,$silent:S,$value:a,$modifiers:B}})}function R(){if(T?.(),O?.(),k?.(),E?.(),w=[],C={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors();j.value?.$clearExternalErrors()}function B(e,t){if(O?.(),R(),!t)if(e?.toOriginalState)r.value=A({...g}),m.value=A({...g});else if(e?.toInitialState)r.value=A({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=A(t),r.value=A(t)}else m.value=A(r.value);if(!e?.keepValidationState){for(let t of Object.values(P.value))t?.$reset(e,!0);j.value?.$reset(e,!0)}e?.clearExternalErrors&&z(),F(),t||M()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t);j.value?.$touch(e,t)}function H(e){return e.filter(([e,t])=>b(t)&&!se(t)?!(t&&typeof t==`object`&&`_null`in t)&&!D(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(P.value))e.$abort();j.value?.$abort()}async function G(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),C.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value};{let e=r.value;W();let t=[...Object.values(P.value).map(e=>e.$validate()),...j.value?[j.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:C.$errors.value,issues:C.$issues.value}}}catch{return{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value}}finally{C.$localPending.value=!1}}function ee(e){try{return e&&(r.value=e),Object.values(P.value).map(e=>e.$validateSync()).every(e=>!!e)}catch{return!1}}let{$shortcuts:te,$localPending:K,...q}=C,J=l({...q,...te,$path:i,$initialValue:m,$originalValue:g,$self:j,$fields:P,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,$validateSync:ee,...o?{"~modifiers":C.$modifiers}:{},...ge(G)});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete J[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function xe({rulesDef:e,...n}){if(ie(e,n.state))return ye({rulesDef:e,...n});if(re(n.state,e)){if(H(n.state))return be({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 be({rulesDef:e,...a,state:r.fakeState})}}else if(ae(e))return _e({rulesDef:i(e.value)?e.value:e,...n})}var Se=`1.18.2-beta.2`;function Ce({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p,overrides:m}){let h=Z(),g=u(),v=u(),y,b;function x(){y=_(()=>n.externalErrors?.value,()=>{b?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?v.value=C(n.externalErrors.value):v.value=n.externalErrors?.value,S()},{immediate:!0,deep:!0})}function S(){b=_(()=>v.value,()=>{y?.(),n.externalErrors?.value&&(n.externalErrors.value=v.value),x()},{deep:!0})}return x(),re(a,i)?g.value=be({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p,overrides:m}):ae(i)&&(g.value=_e({rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p,overrides:m})),r()&&c(()=>{g.value?.$unwatch(),b?.(),y?.()}),l({regle:g})}function we({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s,overrides:c}){let l=i(n)?n:typeof n==`function`?void 0:e(()=>n),f={...a,...r},p,h=d(l??{});typeof n==`function`&&(p=v(()=>{h.value=n(t),m(h)}));let g=u(b(t.value)?{...A(t.value)}:A(t.value)),_=b(t.value)?{...A(t.value)}:A(t.value);return q(()=>{p?.()}),Ce({scopeRules:h,state:t,options:f,initialState:g,originalState:_,customRules:o,shortcuts:s,overrides:c})}function Te(e){let{rules:t,modifiers:n,shortcuts:r,overrides:a}=e??{},o={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange,immediateDirty:n?.immediateDirty};function s(e,n,s){return{r$:we({state:i(e)?e:u(e),rulesFactory:n,options:s,globalOptions:o,customRules:t,shortcuts:r,overrides:a}).regle}}return s}const Ee=Te();function De(){function e(e,t){return t}return e}const Oe=De();function ke(e,t){return x(h(e).$errors,String(t))}function Ae(e,t){return x(h(e).$issues,String(t))}function je(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&&b(r)&&`$each`in r&&r.$each&&b(r.$each)?t[n]=[je(r.$each)]:b(r)&&!D(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=je(r):t[n]=null}return t}function Me(t){let{rules:n,modifiers:r,shortcuts:a,overrides:o}=t??{},s={autoDirty:r?.autoDirty,lazy:r?.lazy,rewardEarly:r?.rewardEarly,silent:r?.silent,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange,immediateDirty:r?.immediateDirty};function c(t,r){let c=i(t)?t:typeof t==`function`?void 0:e(()=>t);return we({state:u(je(c?.value)),rulesFactory:c,options:r,globalOptions:s,customRules:n,shortcuts:a,overrides:o}).regle}return c}const Ne=Me();function Pe(e){if(E(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Fe(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Fe(n)}return Fe(e)}function Fe(e){return!w(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&T(e,Q.REGLE_STATIC,!0),e}function Ie({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=Te({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=Me({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:De(),useRules:a}}function Le(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?S(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?S(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?S(a.overrides,i):a.overrides??i,u=Te({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:De()}}function Re(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 ze(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`?Re(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})})}),Re(a,!n.asRecord)):Re(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Be(t,r){let i=r??Ee;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 Ve(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}=Be(t,e?.customUseRegle),{useCollectScope:r}=ze(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:He,useScopedRegle:Ue}=Ve(),We=He,Ge=Ue;function Ke(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=>b(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function qe(e,t,n){return!!e&&b(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Je(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),qe(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Ye(e){return e}function Xe(e,t){return n=>S({...e},t(n))}const Ze={install(e){e.provide(ne,Se)}};export{I as InternalRuleType,Ze as RegleVuePlugin,V as createRule,Ve as createScopedUseRegle,Ke as createVariant,Ie as defineRegleConfig,Ye as defineRules,Le as extendRegleConfig,pe as flatErrors,ke as getErrors,Ae as getIssues,Oe as inferRules,Pe as markStatic,Re as mergeRegles,qe as narrowVariant,Xe as refineRules,L as unwrapRuleParameters,We as useCollectScope,Ee as useRegle,Ce as useRootStorage,Ne as useRules,Ge as useScopedRegle,Je as variantToRef};
7
+ 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`}function b(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function x(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function S(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 C(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 w(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function E(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function D(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:b(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const O=Symbol(`regle-rule`);function k(e){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 A(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=>A(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[A(e[0]),A(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,k(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=A(e[r],t++);return n}function j(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 M(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 N(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(!N(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(b(e)&&b(t)&&s&&(r||!r&&n)&&!N(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var P=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function F(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new P)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const I={Inline:`__inline`,Async:`__async`};function L(e){try{return e.map(e=>p(e))}catch{return[]}}function R(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function z(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 B(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===I.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...L(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:L(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:L(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:L(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...L(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:R(t),_brand:O})}function V(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=B({...e,async:n},...t);if(z(e.validator)>1){let t=function(...t){return B(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 H(e){return b(e.value)}function U(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const W={LessThan:-1,EqualTo:0,GreaterThan:1};function G(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 W.GreaterThan;if(i>t)return W.LessThan;if(!isNaN(t)&&isNaN(i))return W.GreaterThan;if(isNaN(t)&&!isNaN(i))return W.LessThan}return W.EqualTo}const ee=G(g,`3.5.0`)!==-1;function te(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?te():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=L(i._params),n=L(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 ne=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function re(e,t){return!se(e.value)&&(H(e)||b(t.value)&&!D(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function ie(e,t){return!!e.value&&b(e.value)&&`$each`in e.value||Array.isArray(t.value)}function ae(e){return!!e.value&&(b(e.value)||H(e.value))}function $(e){return(b(e)||typeof e==`function`)&&`_validator`in e}function oe(e){return typeof e.value==`function`?`_validator`in e.value:!0}function se(e){return b(e)&&w(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function ce(e){return b(e)&&`$fields`in e}function le(e){return!!e&&`$rules`in e}function ue({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 de({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 fe(e){return b(e)&&`$each`in e}function pe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!b(e)))return e;if(fe(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>me(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>me(t,n,[e])).flat()}function me(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!b(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(fe(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>me(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>me(n,t,r?.concat(e))).flat()}function he({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:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){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:S.value,...b.value})),p=e(()=>{try{return oe(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),oe(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 D(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>oe(r)&&r.value.type?r.value.type:i),x=e(()=>oe(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:L(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$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()},{deep:ee?1:!0})}S();function C(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function w(){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;C();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,b.value=n}}catch{e=!1}finally{v.value=!1}return e}function T(e,t=!0){if($(r.value)&&r.value._async)return!0;let n=e(a.value,...p.$params.value);if(n instanceof Promise)return!0;if(n!=null){if(typeof n==`boolean`)return n;{let{$valid:e,...t}=n;return b.value=t,e}}return!0}async function E(){try{x.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await w();else{let t=p.$validator.value;e=T(t)}return y.value=e,e}catch{return!1}finally{x.value=!1,g.value=!1}}function O(){try{return x.value=!0,T(p.$validator.value)}catch{return!1}finally{x.value=!1}}function k(){y.value=!0,b.value={},v.value=!1,x.value=!1,S()}function A(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:E,$parseSync:O,$unwatch:A,$watch:S,$reset:k})}function ge(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:pe(i,{includePath:!0})}}}}}function _e({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:C,shortcuts:w,overrides:T,onValidate:E}){let O=t(),k,P=[],I,L,R,z,B=()=>{},V,H=()=>{},U=u(!1);function W(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Z.value=s,q();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,he({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(),G(),te(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B()),c.addRuleDeclEntry(o,e)}function G(){B=k.$debounce.value>0?M(Y,k.$debounce.value,{trackDebounceRef:U}):Y}function te(){H=k.$debounce.value>0?M(()=>{k.$dirty.value=!0},k.$debounce.value):()=>{k.$dirty.value=!0}}function K(){if(X.value)for(let e of Object.values(X.value))e.$unwatch();L(),z?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),I?.(),O.stop(),O=t();for(let e of P)e.stop();P=[],y?.(),R?.()}function q(){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||se(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),b=e(()=>Z.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:h(d.immediateDirty):Z.value.$immediateDirty),C=e(()=>Z.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Z.value.$rewardEarly),E=e(()=>Z.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!O.value:h(d.clearExternalErrorsOnChange):Z.value.$clearExternalErrorsOnChange),O=e(()=>C.value?!0:Z.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Z.value.$silent),A=e(()=>Z.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Z.value.$autoDirty),M=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),F=e({get:()=>n.value,set(e){I(),n.value=e,J()}}),L=e(()=>U.value?q.value&&i.value:q.value&&!K.value&&i.value),R=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value}})),z=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value},silent:!0})),B=e(()=>R.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=u(!1);function W(e,t){return t instanceof Date&&e instanceof Date?j(t).getDate()!==j(e).getDate():t==null?!!e:Array.isArray(e)&&Array.isArray(t)?!N(e,t,Z.value.$deepCompare):t!==e}v(()=>{i.value?Z.value.$isEdited?H.value=Z.value.$isEdited(n.value,S.value,W):T?.isEdited?H.value=T.isEdited(n.value,S.value,W):H.value=W(n.value,S.value):H.value=!1});let G=e(()=>H.value),ee=e(()=>de({field:{$rules:X.value}})),te=e(()=>!(q.value||K.value)),K=e(()=>a.value||!C.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),q=e(()=>p?.value?.length||m?.value?.length?!0:ne.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),Y=e(()=>s??d.id??`root`),ne=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Q=e(()=>{if(p?.value?.length||ne.value||U.value)return!1;if(i.value&&!D(n.value)&&!M.value&&!K.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}),re=e(()=>Object.values(X.value).some(e=>e.$haveAsync)),ie=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:A.value,$silent:O.value,$clearExternalErrorsOnChange:E.value}));function ae(){w?.fields&&Object.entries(w.fields).forEach(([e,r])=>{let a=t();$[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:F,$rules:X,$error:L,$pending:K,$invalid:q,$correct:Q,$errors:B,$ready:te,$silentErrors:V,$anyDirty:o,$tooltips:ee,$name:Y,$inactive:ne,$edited:H,$anyEdited:G}))}),e}),P.push(a)})}let $={};return{$error:L,$pending:K,$invalid:q,$correct:Q,$debounce:f,$deepCompare:_,$lazy:y,$immediateDirty:b,$ready:te,$issues:R,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:C,$autoDirty:A,$silent:O,$clearExternalErrorsOnChange:E,$anyDirty:o,$edited:H,$anyEdited:G,$name:Y,$haveAnyAsyncRule:re,$shortcuts:$,$validating:M,$tooltips:ee,$dirty:i,processShortcuts:ae,$silentValue:F,$inactive:ne,$modifiers:ie,$isArrayOrRegleStatic:c}}),J(),L=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),z=_([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})}),R=_(k.$haveAnyAsyncRule,G)}function J(){I=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||H()),r.value instanceof Function&&W(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B(),k.$clearExternalErrorsOnChange.value&&le()},{deep:k.$isArrayOrRegleStatic.value?!0:ee?1:!0})}async function Y(){try{let{promise:e}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=u({}),Z=u({});W();function ne(e,t){if(Q(),le(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=A(C),S.value=A(C);else if(e?.toInitialState)n.value=A(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=A(t),n.value=A(t)}else S.value=b(n.value)&&!se(n.value)?A(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&le(),!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 B&&B.cancel()}function re(e){return V&&V.abort(),V=F(e),V}function ie(){Q(),V&&V.abort()}function ae(e=!0,t=!1){k.$dirty.value||H(),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Q(),B()):e&&(Q(),B())}async function $(e){try{if(e&&(n.value=e),g)return E?(ae(!1),E()):{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&&!U.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(D(X.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};ie();let{promise:r}=re(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 oe(e){try{return e&&(n.value=e),k.$dirty.value||(k.$dirty.value=!0),g?!1:Object.values(X.value).map(e=>e.$parseSync()).every(e=>!!e)}catch{return!1}}function ce(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function le(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&Y(),k.$immediateDirty.value&&(k.$dirty.value=!0);let{$shortcuts:fe,$validating:pe,$autoDirty:me,$rewardEarly:_e,$clearExternalErrorsOnChange:ve,$haveAnyAsyncRule:ye,$debounce:be,$lazy:xe,...Se}=k;return l({...Se,$externalErrors:p,$value:n,$initialValue:S,$originalValue:C,$rules:X,...fe,$path:a,$isDebouncing:U,$reset:ne,$touch:ae,$validate:$,$validateSync:oe,$unwatch:K,$watch:q,$extractDirtyFields:ce,$clearExternalErrors:le,$abort:ie,$schemaMode:g,"~modifiers":k.$modifiers,...ge($)})}function ve({$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:_,overrides:v}){let y=s.value?.$id??l.$key??K(),x=`${r}.${String(y)}`,S=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:y,enumerable:!1,configurable:!1,writable:!1}}));let C=f(u?.value??[],i),w=e(()=>d?.value?.[i]),T=xe({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:S,cachePath:x,storage:o,options:a,externalErrors:C,schemaErrors:w,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v});return T&&(T.$id=s.value?.$id??String(y),o.addArrayStatus(t,T.$id,T)),s.value&&(!b(s.value)||se(s.value))&&_&&T?.$touch(),T}function ye({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:b,fieldName:x,overrides:S}){let C=t(),w,T=t(),E,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),j=u(n.value),M=u({}),N,P,F=u({}),I=s.getCollectionsEntry(a);E=T.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)})),L(),V();function L(){M.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)),j.value=F.value.$value,Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)?I.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=U(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 ve({$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:b,fieldName:x,schemaMode:m,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=_e({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:b,fieldName:x,schemaMode:m,overrides:S})}function R(){if(Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)){let t=A(I.value);I.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&I.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}=U(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return ve({$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:b,fieldName:x,schemaMode:m,overrides:S})||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 I.value=[]}function z(){N=_(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?L():R(),B()},{deep:ee?1:!0,flush:`pre`}),B()}function B(){P=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),C=t(),w=C.run(()=>{let r=e({get:()=>n.value,set(e){N?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),d=e(()=>(m?F.value.$correct:D(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),S=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),C=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),w=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),T=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),E=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),k=e(()=>M.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):M.value.$rewardEarly),A=e(()=>k.value?!0:M.value.$silent==null?h(c.silent)==null?!1:h(c.silent):M.value.$silent),j=e(()=>M.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):M.value.$autoDirty),L=e(()=>x??c.id??`root`),R=e(()=>({$deepCompare:M.value.$deepCompare??!1,$lazy:M.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:j.value,$silent:A.value,$clearExternalErrorsOnChange:M.value.$clearExternalErrorsOnChange??!1}));function B(){b?.collections&&Object.entries(b?.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:T,$silentErrors:E,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:I,$self:F,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:k,$silent:A,$autoDirty:j,$issues:w,$modifiers:R}}),E.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 H(){N?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),C.stop(),C=t(),T.stop(),T=t(!0),O.forEach(e=>e.stop()),O=[]}function W(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function G(e,t){if(H(),!t)if(e?.toOriginalState)n.value=A(y),g.value=A(y);else if(e?.toInitialState)n.value=A(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=A(t),n.value=A(t)}else g.value=A(n.value);e?.clearExternalErrors&&Y(),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||L()}function te(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function q(e){e&&(n.value=e);let t=n.value;try{return te(),{valid:(await Promise.allSettled([F.value.$validate(e),...I.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function J(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function Y(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function X(e=!0){let t=I.value.map(t=>{if(ce(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>D(e))&&(t=[]),t}let{$shortcuts:Z,...ne}=w;return l({$self:F,...ne,...Z,$path:a,$each:I,$value:n,$initialValue:g,$originalValue:y,$validate:q,$validateSync:J,$unwatch:H,$watch:V,$touch:W,$reset:G,$abort:te,$extractDirtyFields:X,$clearExternalErrors:Y,"~modifiers":w.$modifiers,...ge(q)})}function be({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(),C,w=[],T=null,E=null,O=null,k=null,j=u(void 0);async function M(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),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,xe({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,xe({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,xe({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,xe({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})]}));P.value={...l,...u,...d,...p},t&&L()}function N(){n.value.$self&&(j.value=_e({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:u(void 0),schemaErrors:u(void 0),initialState:f(m?.value??{},`$self`),originalState:g?.$self,fieldName:`$self`,...x}))}let P=x.storage.getFieldsEntry(a);M(),N();function F(){s&&(O=_(s,()=>{R(),M()},{deep:!0}))}function I(){k=_(r,()=>{R(),M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(T?.(),T=_(o,()=>{R(),M()},{deep:!0,flush:`pre`}),F()),d&&(E?.(),E=_(d,()=>{R(),M()},{deep:!0,flush:`post`})),I(),C=S.run(()=>{let a=e({get:()=>r.value,set(e){R(),r.value=e,M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)}}),o=e({get:()=>r.value,set(e){R(),r.value=e,M()}}),s=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),d=e(()=>{if(j.value?.$invalid)return!0;let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),f=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!le(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!D(n.value.$self);if(e.length||t){let t=j.value?.$correct??!0,n=!1;return n=x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>le(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),_=e(()=>{if(j.value?.$error)return!0;let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),b=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),S=e(()=>h(x.options.silent)==null?!!b.value:h(x.options.silent)),T=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),E=e(()=>!(d.value||k.value)),O=u(!1),k=e(()=>{if(j.value?.$pending||O.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),A=e(()=>{let e={...j.value&&{$self:j.value?.$issues??[]}};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),N=e(()=>{let e={...j.value&&{$self:j.value?.$errors??[]}};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),F=e(()=>{let e={...j.value&&{$self:j.value?.$silentErrors??[]}};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),I=e(()=>{if(j.value?.$edited)return!0;if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),L=e(()=>{if(j.value?.$anyEdited)return!0;for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),z=e(()=>y??x.options.id??`root`),B=e(()=>({autoDirty:T.value,lazy:h(x.options.lazy)??!1,rewardEarly:b.value,silent:S.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function H(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let a=t();W[e]=a.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:s,$path:i,$value:r,$silentValue:o,$error:_,$originalValue:g,$pending:k,$invalid:d,$correct:f,$ready:E,$anyDirty:c,$name:z,$silentErrors:F,$initialValue:m,$errors:N,$fields:P,$edited:I,$anyEdited:L,$issues:A,$self:j,"~modifiers":h(x.options)}))}),e}),w.push(a)})}let U=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.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(){}}),W={};return H(),{$dirty:s,$anyDirty:c,$invalid:d,$correct:f,$error:_,$pending:k,$issues:A,$errors:N,$silentErrors:F,$ready:E,$name:z,$shortcuts:W,$groups:U,$silentValue:o,$edited:I,$anyEdited:L,$localPending:O,$autoDirty:T,$silent:S,$value:a,$modifiers:B}})}function R(){if(T?.(),O?.(),k?.(),E?.(),w=[],C={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors();j.value?.$clearExternalErrors()}function B(e,t){if(O?.(),R(),!t)if(e?.toOriginalState)r.value=A({...g}),m.value=A({...g});else if(e?.toInitialState)r.value=A({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=A(t),r.value=A(t)}else m.value=A(r.value);if(!e?.keepValidationState){for(let t of Object.values(P.value))t?.$reset(e,!0);j.value?.$reset(e,!0)}e?.clearExternalErrors&&z(),F(),t||M()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t);j.value?.$touch(e,t)}function H(e){return e.filter(([e,t])=>b(t)&&!se(t)?!(t&&typeof t==`object`&&`_null`in t)&&!D(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(P.value))e.$abort();j.value?.$abort()}async function G(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),C.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value};{let e=r.value;W();let t=[...Object.values(P.value).map(e=>e.$validate()),...j.value?[j.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:C.$errors.value,issues:C.$issues.value}}}catch{return{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value}}finally{C.$localPending.value=!1}}function ee(e){try{return e&&(r.value=e),[...Object.values(P.value).map(e=>e.$validateSync()),...j.value?[j.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}let{$shortcuts:te,$localPending:K,...q}=C,J=l({...q,...te,$path:i,$initialValue:m,$originalValue:g,$self:j,$fields:P,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,$validateSync:ee,...o?{"~modifiers":C.$modifiers}:{},...ge(G)});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete J[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function xe({rulesDef:e,...n}){if(ie(e,n.state))return ye({rulesDef:e,...n});if(re(n.state,e)){if(H(n.state))return be({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 be({rulesDef:e,...a,state:r.fakeState})}}else if(ae(e))return _e({rulesDef:i(e.value)?e.value:e,...n})}var Se=`1.18.3`;function Ce({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p,overrides:m}){let h=Z(),g=u(),v=u(),y,b;function x(){y=_(()=>n.externalErrors?.value,()=>{b?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?v.value=C(n.externalErrors.value):v.value=n.externalErrors?.value,S()},{immediate:!0,deep:!0})}function S(){b=_(()=>v.value,()=>{y?.(),n.externalErrors?.value&&(n.externalErrors.value=v.value),x()},{deep:!0})}return x(),re(a,i)?g.value=be({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p,overrides:m}):ae(i)&&(g.value=_e({rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p,overrides:m})),r()&&c(()=>{g.value?.$unwatch(),b?.(),y?.()}),l({regle:g})}function we({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s,overrides:c}){let l=i(n)?n:typeof n==`function`?void 0:e(()=>n),f={...a,...r},p,h=d(l??{});typeof n==`function`&&(p=v(()=>{h.value=n(t),m(h)}));let g=u(b(t.value)?{...A(t.value)}:A(t.value)),_=b(t.value)?{...A(t.value)}:A(t.value);return q(()=>{p?.()}),Ce({scopeRules:h,state:t,options:f,initialState:g,originalState:_,customRules:o,shortcuts:s,overrides:c})}function Te(e){let{rules:t,modifiers:n,shortcuts:r,overrides:a}=e??{},o={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange,immediateDirty:n?.immediateDirty};function s(e,n,s){return{r$:we({state:i(e)?e:u(e),rulesFactory:n,options:s,globalOptions:o,customRules:t,shortcuts:r,overrides:a}).regle}}return s}const Ee=Te();function De(){function e(e,t){return t}return e}const Oe=De();function ke(e,t){return x(h(e).$errors,String(t))}function Ae(e,t){return x(h(e).$issues,String(t))}function je(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&&b(r)&&`$each`in r&&r.$each&&b(r.$each)?t[n]=[je(r.$each)]:b(r)&&!D(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=je(r):t[n]=null}return t}function Me(t){let{rules:n,modifiers:r,shortcuts:a,overrides:o}=t??{},s={autoDirty:r?.autoDirty,lazy:r?.lazy,rewardEarly:r?.rewardEarly,silent:r?.silent,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange,immediateDirty:r?.immediateDirty};function c(t,r){let c=i(t)?t:typeof t==`function`?void 0:e(()=>t);return we({state:u(je(c?.value)),rulesFactory:c,options:r,globalOptions:s,customRules:n,shortcuts:a,overrides:o}).regle}return c}const Ne=Me();function Pe(e){if(E(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Fe(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Fe(n)}return Fe(e)}function Fe(e){return!w(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&T(e,Q.REGLE_STATIC,!0),e}function Ie({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=Te({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=Me({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:De(),useRules:a}}function Le(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?S(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?S(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?S(a.overrides,i):a.overrides??i,u=Te({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:De()}}function Re(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 ze(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`?Re(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})})}),Re(a,!n.asRecord)):Re(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Be(t,r){let i=r??Ee;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 Ve(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}=Be(t,e?.customUseRegle),{useCollectScope:r}=ze(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:He,useScopedRegle:Ue}=Ve(),We=He,Ge=Ue;function Ke(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=>b(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function qe(e,t,n){return!!e&&b(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Je(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),qe(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Ye(e){return e}function Xe(e,t){return n=>S({...e},t(n))}const Ze={install(e){e.provide(ne,Se)}};export{I as InternalRuleType,Ze as RegleVuePlugin,V as createRule,Ve as createScopedUseRegle,Ke as createVariant,Ie as defineRegleConfig,Ye as defineRules,Le as extendRegleConfig,pe as flatErrors,ke as getErrors,Ae as getIssues,Oe as inferRules,Pe as markStatic,Re as mergeRegles,qe as narrowVariant,Xe as refineRules,L as unwrapRuleParameters,We as useCollectScope,Ee as useRegle,Ce as useRootStorage,Ne as useRules,Ge as useScopedRegle,Je as variantToRef};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.18.2-beta.2",
3
+ "version": "1.18.3",
4
4
  "description": "Headless form validation library for Vue",
5
5
  "keywords": [
6
6
  "regle",
@@ -54,7 +54,7 @@
54
54
  },
55
55
  "devDependencies": {
56
56
  "@total-typescript/ts-reset": "0.6.1",
57
- "@types/node": "24.1.0",
57
+ "@types/node": "24.10.10",
58
58
  "@vue/devtools-kit": "7.7.9",
59
59
  "@vue/test-utils": "2.4.6",
60
60
  "tsdown": "0.20.1",