@regle/core 1.5.2 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +23 -5
- package/dist/regle-core.js +25 -1
- package/dist/regle-core.min.js +1 -1
- package/package.json +3 -3
package/dist/regle-core.d.ts
CHANGED
|
@@ -1226,6 +1226,16 @@ type RegleShortcutDefinition<TCustomRules extends Record<string, any> = {}> = {
|
|
|
1226
1226
|
type AddDollarToOptions<T extends Record<string, any>> = { [K in keyof T as `$${string & K}`]: T[K] };
|
|
1227
1227
|
//#endregion
|
|
1228
1228
|
//#region src/types/core/useRegle.types.d.ts
|
|
1229
|
+
/**
|
|
1230
|
+
* The main Regle type that represents a complete validation instance.
|
|
1231
|
+
*
|
|
1232
|
+
* @template TState - The shape of the state object being validated
|
|
1233
|
+
* @template TRules - The validation rules tree for the state
|
|
1234
|
+
* @template TValidationGroups - Groups of validation rules that can be run together
|
|
1235
|
+
* @template TShortcuts - Custom shortcut definitions for common validation patterns
|
|
1236
|
+
* @template TAdditionalReturnProperties - Additional properties to extend the return type
|
|
1237
|
+
*
|
|
1238
|
+
*/
|
|
1229
1239
|
type Regle<TState extends Record<string, any> = EmptyObject, TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree> = EmptyObject, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}, TShortcuts extends RegleShortcutDefinition = {}, TAdditionalReturnProperties extends Record<string, any> = {}> = {
|
|
1230
1240
|
/**
|
|
1231
1241
|
* r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display information.
|
|
@@ -1234,6 +1244,14 @@ type Regle<TState extends Record<string, any> = EmptyObject, TRules extends Regl
|
|
|
1234
1244
|
*/
|
|
1235
1245
|
r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
|
|
1236
1246
|
} & TAdditionalReturnProperties;
|
|
1247
|
+
/**
|
|
1248
|
+
* The type for a single field validation instance.
|
|
1249
|
+
*
|
|
1250
|
+
* @template TState - The type of the state value being validated
|
|
1251
|
+
* @template TRules - The validation rules for the field
|
|
1252
|
+
* @template TShortcuts - Custom shortcut definitions for common validation patterns
|
|
1253
|
+
* @template TAdditionalReturnProperties - Additional properties to extend the return type
|
|
1254
|
+
*/
|
|
1237
1255
|
type RegleSingleField<TState extends Maybe<PrimitiveTypes> = any, TRules extends RegleRuleDecl<NonNullable<TState>> = EmptyObject, TShortcuts extends RegleShortcutDefinition = {}, TAdditionalReturnProperties extends Record<string, any> = {}> = {
|
|
1238
1256
|
/**
|
|
1239
1257
|
* r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display information.
|
|
@@ -1274,10 +1292,10 @@ type ScopedInstancesRecordLike = Partial<ScopedInstancesRecord>;
|
|
|
1274
1292
|
type PartialFormState<TState extends Record<string, any>> = [unknown] extends [TState] ? {} : Prettify<{ [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? never : TState[K] extends Array<any> ? never : K]?: MaybeOutput<TState[K]> } & { [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? K : TState[K] extends Array<any> ? K : never]: NonNullable<TState[K]> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : PartialFormState<TState[K]> }>;
|
|
1275
1293
|
type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any>> = {
|
|
1276
1294
|
valid: false;
|
|
1277
|
-
data: IsUnknown<Data> extends true ? unknown : NonNullable<Data> extends Date | File ? MaybeOutput<Data> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : MaybeOutput<Data
|
|
1295
|
+
data: IsUnknown<Data> extends true ? unknown : IsAny$1<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Date | File ? MaybeOutput<Data> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : MaybeOutput<Data> : unknown;
|
|
1278
1296
|
} | {
|
|
1279
1297
|
valid: true;
|
|
1280
|
-
data: IsUnknown<Data> extends true ? unknown : Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules
|
|
1298
|
+
data: IsUnknown<Data> extends true ? unknown : IsAny$1<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules> : unknown;
|
|
1281
1299
|
};
|
|
1282
1300
|
/**
|
|
1283
1301
|
* Infer safe output from any `r$` instance
|
|
@@ -1939,7 +1957,7 @@ type NormalizeUnion<TUnion> = RetrieveUnionUnknownValues<NonNullable<UnionToTupl
|
|
|
1939
1957
|
/**
|
|
1940
1958
|
* Combine all members of a union type, merging types for each key, and keeping loose types
|
|
1941
1959
|
*/
|
|
1942
|
-
type JoinDiscriminatedUnions<TUnion extends unknown> = isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection<RemoveCommonKey<UnionToTuple<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>[number]>> & Pick<NormalizeUnion<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>> : TUnion;
|
|
1960
|
+
type JoinDiscriminatedUnions<TUnion extends unknown> = HasNamedKeys<TUnion> extends true ? isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection<RemoveCommonKey<UnionToTuple<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>[number]>> & Pick<NormalizeUnion<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>> : TUnion : TUnion;
|
|
1943
1961
|
type LazyJoinDiscriminatedUnions<TUnion extends unknown> = isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection<RemoveCommonKey<UnionToTuple<TUnion>, keyof NonNullable<TUnion>>[number]>> & Pick<NonNullable<TUnion>, keyof NonNullable<TUnion>>> : TUnion;
|
|
1944
1962
|
type EnumLike = {
|
|
1945
1963
|
[k: string]: string | number;
|
|
@@ -2280,7 +2298,7 @@ type FormRuleDeclaration<TValue extends any = unknown, TParams extends any[] = a
|
|
|
2280
2298
|
/**
|
|
2281
2299
|
* @public
|
|
2282
2300
|
*/
|
|
2283
|
-
type RegleRoot<TState extends Record<string,
|
|
2301
|
+
type RegleRoot<TState extends Record<string, unknown> = {}, TRules extends ReglePartialRuleTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TShortcuts extends RegleShortcutDefinition = {}> = MaybeVariantStatus<TState, TRules, TShortcuts> & ([TValidationGroups] extends [never] ? {} : {
|
|
2284
2302
|
/**
|
|
2285
2303
|
* Collection of validation groups used declared with the `validationGroups` modifier
|
|
2286
2304
|
*/
|
|
@@ -2329,7 +2347,7 @@ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
|
2329
2347
|
/**
|
|
2330
2348
|
* @public
|
|
2331
2349
|
*/
|
|
2332
|
-
type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialRuleTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = {}> = [TState[TKey]] extends [undefined | null] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Array<infer U extends Record<string, any>> ? ExtendOnlyRealRecord<U> extends true ? TRule extends RegleCollectionRuleDefinition<any, any> ? ExtractFromGetter<TRule['$each']> extends ReglePartialRuleTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCollectionStatus<TState[TKey], {}, TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : TRule extends ReglePartialRuleTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? MaybeVariantStatus<TState[TKey], TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? MaybeVariantStatus<TState[TKey], ReglePartialRuleTree<TState[TKey]>, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts>;
|
|
2350
|
+
type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialRuleTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = {}> = HasNamedKeys<TState> extends true ? [TState[TKey]] extends [undefined | null] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Array<infer U extends Record<string, any>> ? ExtendOnlyRealRecord<U> extends true ? TRule extends RegleCollectionRuleDefinition<any, any> ? ExtractFromGetter<TRule['$each']> extends ReglePartialRuleTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCollectionStatus<TState[TKey], {}, TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : TRule extends ReglePartialRuleTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? MaybeVariantStatus<TState[TKey], TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? MaybeVariantStatus<TState[TKey], ReglePartialRuleTree<TState[TKey]>, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCommonStatus<unknown>;
|
|
2333
2351
|
/**
|
|
2334
2352
|
* @internal
|
|
2335
2353
|
* @reference {@link InferRegleStatusType}
|
package/dist/regle-core.js
CHANGED
|
@@ -138,7 +138,7 @@ function isEqual(a, b, deep = false, firstDeep = true) {
|
|
|
138
138
|
for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
|
|
139
139
|
for (i = length; i-- !== 0;) {
|
|
140
140
|
var key = keys[i];
|
|
141
|
-
if (isObject(a) && isObject(b)) {
|
|
141
|
+
if (isObject(a) && isObject(b) && key) {
|
|
142
142
|
if (firstDeep || !firstDeep && deep) {
|
|
143
143
|
if (!isEqual(a[key], b[key], deep, false)) return false;
|
|
144
144
|
}
|
|
@@ -461,9 +461,24 @@ function useStorage() {
|
|
|
461
461
|
|
|
462
462
|
//#endregion
|
|
463
463
|
//#region src/utils/object.utils.ts
|
|
464
|
+
/**
|
|
465
|
+
* Checks if a Vue Ref is an object.
|
|
466
|
+
*
|
|
467
|
+
* @param obj - The Ref to check
|
|
468
|
+
* @returns True if the Ref is an object, false otherwise
|
|
469
|
+
*/
|
|
464
470
|
function isRefObject(obj) {
|
|
465
471
|
return isObject(obj.value);
|
|
466
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Unwraps a collection ($each) getter function or returns the getter directly if it's not a function.
|
|
475
|
+
*
|
|
476
|
+
* @template T - The type of the getter function or the getter value
|
|
477
|
+
* @param getter - The getter function or value to unwrap
|
|
478
|
+
* @param value - The value to pass to the getter
|
|
479
|
+
* @param index - The index to pass to the getter
|
|
480
|
+
* @returns An object containing the scope and the unwrapped value
|
|
481
|
+
*/
|
|
467
482
|
function unwrapGetter(getter, value, index) {
|
|
468
483
|
const scope = effectScope();
|
|
469
484
|
let unwrapped;
|
|
@@ -508,6 +523,9 @@ const isVueSuperiorOrEqualTo3dotFive = versionCompare(version, "3.5.0") === -1 ?
|
|
|
508
523
|
function uniqueIDNuxt() {
|
|
509
524
|
return Math.floor(Math.random() * Date.now()).toString();
|
|
510
525
|
}
|
|
526
|
+
/**
|
|
527
|
+
* Generates a random SSR compatible ID.
|
|
528
|
+
*/
|
|
511
529
|
function randomId() {
|
|
512
530
|
if (typeof window === "undefined") return uniqueIDNuxt();
|
|
513
531
|
else {
|
|
@@ -525,6 +543,12 @@ function tryOnScopeDispose(fn) {
|
|
|
525
543
|
}
|
|
526
544
|
return false;
|
|
527
545
|
}
|
|
546
|
+
/**
|
|
547
|
+
* Creates a global state that is shared for scoped validation.
|
|
548
|
+
*
|
|
549
|
+
* @param stateFactory - The function that creates the state
|
|
550
|
+
* @returns The state factory function
|
|
551
|
+
*/
|
|
528
552
|
function createGlobalState(stateFactory) {
|
|
529
553
|
let initialized = false;
|
|
530
554
|
let state;
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t=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 D(e,t,n){let r,i=(...i)=>new Promise(a=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,n||Promise.resolve(e.apply(this,[...i])).then(a)},t),n&&!r&&Promise.resolve(e.apply(this,[...i])).then(a)});return i.cancel=()=>{clearTimeout(r),r=void 0},i}function O(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(!O(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];return!(w(e)&&w(t)&&(r||!r&&n)&&!O(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const k={Inline:`__inline`,Async:`__async`};function A(e,t){return e.some(e=>e[t])}function j(e,t){return e.reduce((e,n)=>{let r=n[t]||[];return e.concat(r)},[])}function M(e){try{return e.map(e=>p(e))}catch{return[]}}function N(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function P(e){let t=e.toString(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function F(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===k.Async||n.constructor.name===`AsyncFunction`,s={validator(n,...r){return e.validator(n,...M(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:M(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:M(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:M(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...M(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)}},c=a({...s,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:N(t),_brand:x});return c}function I(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=F({...e,async:n},...t);if(P(e.validator)>1){let t=function(...t){return F(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 L(){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;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?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`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=M(i._params),n=M(r._params);return e?.[t]===n?.[t]}}):!0}):!1}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}}function R(e){return w(e.value)}function z(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const B={LessThan:-1,EqualTo:0,GreaterThan:1};function V(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 B.GreaterThan;if(i>t)return B.LessThan;if(!isNaN(t)&&isNaN(i))return B.GreaterThan;if(isNaN(t)&&!isNaN(i))return B.LessThan}return B.EqualTo}const H=V(g,`3.5.0`)!==-1;function U(){return Math.floor(Math.random()*Date.now()).toString()}function W(){if(typeof window>`u`)return U();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.toString(10)}}function G(e){return r()?(c(e),!0):!1}function K(e){let n=!1,r,i=t(!0);return(...t)=>(n||(r=i.run(()=>e(...t)),n=!0),r)}function q(e,t){return R(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>X(t)||typeof t==`function`)}function J(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function Y(e){return!!e.value&&w(e.value)}function X(e){return w(e)&&`_validator`in e}function Z(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({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;let a={$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}};return a}),r=n.filter(e=>!!e),i=r.reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),a=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],o=e.$error?e.$schemaErrors??[]:[];return[...i,...a,...o]}function re({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 ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>Q(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>Q(t,n,[e])).flat()}function Q(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({error:e,path:r?.join(`.`)??``})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>Q(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>Q(n,t,r?.concat(e))).flat()}function oe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,$debounce:d,modifiers:f}){let p=t(),m={},h,g=u(!1),v=u(!1),{$pending:y,$valid:x,$metadata:S,$validating:C}=c.trySetRuleStatusRef(`${s}.${i}`);function w(){p=t(),m=p.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:x.value,$invalid:!x.value,$pending:y.value},$params:C.value,...S.value})),p=e(()=>Z(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Z(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}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Z(r)&&r.value.type?r.value.type:i),v=e(()=>Z(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:M(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:v,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),h=_(m?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&m.$fieldError.value)&&k()})}w();function T(){x.value=!0,m.$fieldDirty.value&&(y.value=!0)}async function E(){let e=!1;try{let t=m.$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,...m.$params.value),r=a.value;T();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,S.value=n}}catch{e=!1}finally{y.value=!1}return e}let O=D(E,d??200);async function k(){try{C.value=!0;let e=!1;if(v.value=!0,X(r.value)&&r.value._async)e=await O();else{let t=m.$validator.value,n=t(a.value,...m.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,S.value=r}}return x.value=e,e}catch{return!1}finally{C.value=!1,v.value=!1}}function A(){x.value=!0,S.value={},y.value=!1,C.value=!1,w()}function j(){h(),p.stop(),p=t()}return l({...m,$pending:y,$valid:x,$metadata:S,$haveAsync:g,$maybePending:v,$validating:C,$parse:k,$unwatch:j,$watch:w,$reset:A})}function se({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,shortcuts:T,onValidate:k}){let A=t(),j,M=[],N,P,F,I,L=()=>{};function R(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);K.value=s,V();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,oe({modifiers:{$silent:j.$silent,$rewardEarly:j.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:K.value.$debounce})])}G.value=Object.fromEntries(u),j.processShortcuts(),z(),t?.valid!=null&&(j.$dirty.value=c.getDirtyState(o),(j.$dirty.value&&!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L()),c.addRuleDeclEntry(o,e)}function z(){L=j.$debounce.value?D(W,j.$debounce.value??j.$haveAnyAsyncRule?100:0):W}function B(){if(G.value)for(let e of Object.values(G.value))e.$unwatch();P(),I?.(),j.$dirty.value&&c.setDirtyEntry(o,j.$dirty.value),N?.(),A.stop(),A=t();for(let e of M)e.stop();M=[],y?.(),F?.()}function V(){if(G.value)for(let e of Object.values(G.value))e.$watch();j=A.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>K.value.$debounce),f=e(()=>K.value.$deepCompare==null?!1:K.value.$deepCompare),_=e(()=>K.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):K.value.$lazy),y=e(()=>K.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):K.value.$rewardEarly),x=e(()=>K.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):K.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:K.value.$silent==null?h(d.silent)==null?!1:h(d.silent):K.value.$silent),w=e(()=>K.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):K.value.$autoDirty),D=e(()=>{for(let e of Object.values(G.value))if(e.$validating)return!0;return!1}),k=e({get:()=>n.value,set(e){N(),n.value=e,U()}}),A=e(()=>H.value&&!V.value&&i.value),j=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),P=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),F=e(()=>j.value.map(e=>e.$message)),I=e(()=>P.value.map(e=>e.$message)),L=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?E(S.value).getDate()!==E(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!O(n.value,S.value,K.value.$deepCompare):S.value!==n.value:!1),R=e(()=>L.value),z=e(()=>re({field:{$rules:G.value}})),B=e(()=>(C.value||o.value)&&!(H.value||V.value)),V=e(()=>a.value||!y.value?Object.entries(G.value).some(([e,t])=>t.$pending):!1),H=e(()=>p?.value?.length||m?.value?.length?!0:q.value?!1:!y.value||y.value?Object.values(G.value).some(e=>!e.$valid||e.$maybePending):!1),W=e(()=>s),q=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),J=e(()=>{if(p?.value?.length||q.value)return!1;if(i.value&&!b(n.value)&&!D.value&&!V.value){if(g)return!m?.value?.length;{let e=Object.values(G.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),Y=e(()=>Object.values(G.value).some(e=>e.$haveAsync));function X(){T?.fields&&Object.entries(T.fields).forEach(([e,r])=>{let a=t();Z[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:k,$rules:G,$error:A,$pending:V,$invalid:H,$correct:J,$errors:F,$ready:B,$silentErrors:I,$anyDirty:o,$tooltips:z,$name:W,$inactive:q,$edited:L,$anyEdited:R}))}),e}),M.push(a)})}let Z={};return{$error:A,$pending:V,$invalid:H,$correct:J,$debounce:c,$deepCompare:f,$lazy:_,$ready:B,$issues:j,$silentIssues:P,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:Y,$shortcuts:Z,$validating:D,$tooltips:z,$dirty:i,processShortcuts:X,$silentValue:k,$inactive:q}}),U(),P=_(j.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(G.value).forEach(t=>{t.$fieldDirty=e})}),I=_([j.$error,j.$correct,j.$invalid,j.$pending],()=>{Object.values(G.value).forEach(e=>{e.$fieldError=j.$error.value,e.$fieldInvalid=j.$invalid.value,e.$fieldPending=j.$pending.value,e.$fieldCorrect=j.$correct.value})}),F=_(j.$haveAnyAsyncRule,z)}function U(){N=_(n,()=>{j.$autoDirty.value&&!j.$silent.value&&(j.$dirty.value||(j.$dirty.value=!0)),r.value instanceof Function&&R(),(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L(),j.$clearExternalErrorsOnChange.value&&Z()},{deep:x?!0:H?1:!0})}function W(){Object.values(G.value).forEach(e=>{e.$parse()})}let G=u({}),K=u({});R();function q(e,t){if(Z(),j.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&Z(),!t)for(let e of Object.values(G.value))e.$reset();if(!j.$lazy.value&&!j.$silent.value&&!t)for(let e of Object.values(G.value))e.$parse()}function J(e=!0,t=!1){j.$dirty.value||(j.$dirty.value=!0),t&&e?(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L():e&&L()}async function Y(){try{if(g)return k?(J(!1),k()):{valid:!1,data:n.value};let e=n.value;if(!j.$dirty.value)j.$dirty.value=!0;else if(!j.$silent.value&&j.$dirty.value&&!j.$pending.value)return{valid:!j.$error.value,data:e};if(g)return{valid:!m?.value?.length,data:e};if(b(G.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.values(G.value).map(e=>e.$parse())),r=t.every(e=>e.status===`fulfilled`&&e.value===!0);return{valid:r,data:e}}catch{return{valid:!1,data:n.value}}}function X(e=!0){return j.$dirty.value?n.value:e?{_null:!0}:null}function Z(){p?.value?.length&&(p.value=[])}!j.$lazy.value&&!j.$dirty.value&&!j.$silent.value&&L();let{$shortcuts:ee,$validating:te,$autoDirty:ie,$rewardEarly:ae,$clearExternalErrorsOnChange:Q,$haveAnyAsyncRule:se,$debounce:ce,$lazy:le,...ue}=j;return l({...ue,$externalErrors:p,$value:n,$initialValue:S,$rules:G,...ee,$path:a,$reset:q,$touch:J,$validate:Y,$unwatch:B,$watch:V,$extractDirtyFields:X,$clearExternalErrors:Z})}function ce({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,shortcuts:m,fieldName:h,schemaMode:g}){let _=s.value?.$id??l.$key??W(),v=`${r}.${String(_)}`,y=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:_,enumerable:!1,configurable:!1,writable:!1}}));let b=f(u?.value??[],i),x=e(()=>d?.value?.[i]),S=$({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:y,cachePath:v,storage:o,options:a,externalErrors:b,schemaErrors:x,initialState:p,shortcuts:m,fieldName:h,schemaMode:g});if(S){let e=s.value?.$id;S.$id=e??String(_),o.addArrayStatus(t,S.$id,S)}return S}function le({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,shortcuts:g,fieldName:y}){let x=t(),S,w=t(),T,E=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let D=u(),O=u(n.value),k=u({}),A,j,M=u({}),N=o.getCollectionsEntry(a);T=w.run(()=>{let t=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=>X(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),P(),R();function P(){k.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(D.value=W(),Object.defineProperties(n.value,{$id:{value:D.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(D.value=n.value.$id)),O.value=M.value.$value,Array.isArray(n.value)&&!T.isPrimitiveArray.value?N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=z(r.value.$each,f(()=>t),n);l&&E.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each),b=ce({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,shortcuts:g,fieldName:y,schemaMode:p});return b||null}).filter(e=>!!e):N.value=[],M.value=se({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,shortcuts:g,fieldName:y,schemaMode:p})}function F(){if(Array.isArray(n.value)&&!T.isPrimitiveArray.value){let t=C(N.value);N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&N.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(D.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=z(r.value.$each,l,n);t&&E.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]),v=ce({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),shortcuts:g,fieldName:y,schemaMode:p});return v||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(D.value,t.toString())})}else N.value=[]}function I(){A=_(n,()=>{j?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!D.value?P():F(),L()},{deep:H?1:!0,flush:`pre`}),L()}function L(){j=_(n,()=>{S.$autoDirty.value&&!S.$silent.value&&M.value.$touch(!1,!0)},{flush:`post`})}function R(){I(),x=t(),S=x.run(()=>{let r=e({get:()=>n.value,set(e){A?.(),j?.(),n.value=e,I()}}),i=e(()=>M.value.$dirty&&(!N.value.length||N.value.every(e=>e.$dirty))),o=e(()=>M.value.$anyDirty||N.value.some(e=>e.$anyDirty)),c=e(()=>M.value.$invalid||N.value.some(e=>e.$invalid)),d=e(()=>(b(M.value.$rules)?!0:M.value.$correct)&&(!N.value.length||N.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>M.value.$error||N.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>M.value.$pending||N.value.some(e=>e.$pending)),x=e(()=>!!N.value.length&&N.value.every(e=>e.$edited)),S=e(()=>M.value.$anyEdited||N.value.some(e=>e.$anyEdited)),C=e(()=>({$self:M.value.$issues,$each:N.value.map(e=>e.$issues)})),w=e(()=>({$self:M.value.$errors,$each:N.value.map(e=>e.$errors)})),T=e(()=>({$self:M.value.$silentErrors,$each:N.value.map(e=>e.$silentErrors)})),D=e(()=>k.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):k.value.$rewardEarly),O=e(()=>D.value?!0:k.value.$silent==null?h(s.silent)==null?!1:h(s.silent):k.value.$silent),P=e(()=>k.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):k.value.$autoDirty),F=e(()=>y);function L(){g?.collections&&Object.entries(g?.collections).forEach(([e,s])=>{let h=t();R[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:c,$correct:d,$errors:w,$silentErrors:T,$initialValue:m,$ready:p,$anyDirty:o,$name:F,$each:N,$self:M,$value:n,$edited:x,$anyEdited:S,$issues:C}))}),e}),E.push(h)})}let R={};return L(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:w,$silentErrors:T,$ready:p,$name:F,$shortcuts:R,$silentValue:r,$edited:x,$anyEdited:S,$rewardEarly:D,$silent:O,$autoDirty:P,$issues:C}}),T.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 B(){A?.(),M.value&&M.value.$unwatch(),N.value&&N.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),x.stop(),x=t(),w.stop(),w=t(!0),E.forEach(e=>e.stop()),E=[]}function V(e=!0,t=!1){M.value.$touch(e,t),N.value.forEach(n=>{n.$touch(e,t)})}function U(e,t){if(B(),!t)if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&K(),M.value.$reset(e,t),N.value.forEach(t=>{t.$reset(e,!0)}),t||P()}async function G(){let e=n.value;try{let t=await Promise.allSettled([M.value.$validate(),...N.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function K(){M.value.$clearExternalErrors(),N.value.forEach(e=>{e.$clearExternalErrors()})}function q(e=!0){let t=N.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:J,...Y}=S;return l({$self:M,...Y,...J,$path:a,$each:N,$value:n,$initialValue:m,$validate:G,$unwatch:B,$watch:R,$touch:V,$reset:U,$extractDirtyFields:q,$clearExternalErrors:K})}function ue({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,fieldName:g,...y}){let x=t(),S,T=[],E=null,D=null,O=null,k=null,M=null;async function N(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,$({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,fieldName:n,...y})]),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,$({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]})),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),h=e(()=>({}));return[t,$({state:l,rulesDef:h,path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,fieldName:t,...y})]})),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,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]}));P.value={...l,...u,...d,...p},t&&L()}let P=y.storage.getFieldsEntry(a);N();function F(){s&&(O=_(s,()=>{R(),N()},{deep:!0}))}function I(){k=_(r,()=>{R(),N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(E?.(),E=_(o,()=>{R(),N()},{deep:!0,flush:`pre`}),F()),d&&(D?.(),D=_(d,()=>{R(),N()},{deep:!0,flush:`post`})),I(),S=x.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,N()}}),o=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}),s=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{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}),d=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!te(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?y.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>{if(!te(t))return t?.$correct;let n=`required`in t.$rules&&t.$rules.required.$active;return n?t.$correct:!t.$invalid&&!t.$pending}):!1}),f=e(()=>{let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(y.options.rewardEarly)==null?!1:h(y.options.rewardEarly)),b=e(()=>h(y.options.silent)==null?!!_.value:h(y.options.silent)),x=e(()=>h(y.options.autoDirty)==null?!0:h(y.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||E.value)),w=u(!1),E=e(()=>{if(w.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),D=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),O=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),k=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),M=e(()=>{if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),F=e(()=>{for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),I=e(()=>g);function L(){y.shortcuts?.nested&&Object.entries(y.shortcuts.nested).forEach(([e,n])=>{let p=t();B[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$pending:E,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:I,$silentErrors:k,$initialValue:m,$errors:O,$fields:P,$edited:M,$anyEdited:F,$issues:D}))}),e}),T.push(p)})}let z=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,A(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,j(t,e)]))}]:[])):{},set(){}}),B={};return L(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:E,$issues:D,$errors:O,$silentErrors:k,$ready:C,$name:I,$shortcuts:B,$groups:z,$silentValue:a,$edited:M,$anyEdited:F,$localPending:w,$autoDirty:x,$silent:b,$value:n}})}function R(){if(E?.(),O?.(),k?.(),M?.(),D?.(),T=[],S={},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()}function B(e,t){if(O?.(),R(),!t)if(e?.toInitialState)r.value=C({...m.value??{}});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);for(let t of Object.values(P.value))t.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||N()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n.$touch(e,t)}function H(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(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)}async function W(){try{if(y.schemaMode)return y.onValidate?(V(!1),S.$localPending.value=!0,y.onValidate()):{valid:!1,data:r.value};{let e=r.value,t=await Promise.allSettled(Object.values(P.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`&&e?.value.valid===!0);return{valid:n,data:e}}}catch{return{valid:!1,data:r.value}}finally{S.$localPending.value=!1}}let{$shortcuts:G,$localPending:K,...q}=S,J=l({...q,...G,$path:i,$initialValue:m,$fields:P,$reset:B,$touch:V,$validate:W,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)))delete J[e];for(let e of Object.values(P.value))Object.assign(J,{[e.$name]:e})}),J}function $({rulesDef:e,...n}){if(J(e,n.state,n.schemaMode))return le({rulesDef:e,...n});if(q(n.state,e)){if(R(n.state))return ue({rulesDef:e,...n});{let r=t(),i=r.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:a,...o}=n;return ue({rulesDef:e,...o,state:i.fakeState})}}else if(Y(e))return se({rulesDef:e,...n})}function de({initialState:e,options:t,scopeRules:n,state:i,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:d=!1,onValidate:f}){let p=L(),m=u();return q(i,n)?m.value=ue({rootRules:n,rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaErrors:s,rootSchemaErrors:s,schemaMode:d,onValidate:f}):Y(n)&&(m.value=se({rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaMode:d,schemaErrors:s,onValidate:f})),r()&&c(()=>{m.value?.$unwatch()}),l({regle:m})}function fe(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o,s){let c=i(o)?o:typeof o==`function`?void 0:e(()=>o),l={...a,...s},f=i(n)?n:u(n),p=d(c??{});typeof o==`function`&&v(()=>{p.value=o(f),m(p)});let h=u(w(f.value)?{...C(f.value)}:C(f.value)),g=de({scopeRules:p,state:f,options:l,initialState:h,customRules:t,shortcuts:r});return{r$:g.regle}}return o}const pe=fe();function me(){function e(e,t){return t}return e}const he=me();function ge({rules:e,modifiers:t,shortcuts:n}){let r=fe(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let i=me();return{useRegle:r,inferRules:i}}function _e(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=fe(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=me();return{useRegle:c,inferRules:l}}function ve(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.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),g=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),_=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),v=e(()=>r?Object.values(t):t);function y(e){Object.values(t).forEach(t=>{t.$reset(e)})}function b(){Object.values(t).forEach(e=>{e.$touch()})}function x(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function S(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function C(){try{let e=i.value,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function ye(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return ve(t,!n.asRecord)}else return ve(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function be(t,r){let i=r??pe,a=(r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${W()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),G(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}};return{useScopedRegle:a}}function xe(e){let t=e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):K(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=be(n,e?.customUseRegle),{useCollectScope:i}=ye(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Se,useScopedRegle:Ce}=xe();function we(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(X(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function Te(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ee(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),Te(r.value,t,n)?a.value=r.value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function De(e){return e}function Oe(e,t){return n=>T({...e},t(n))}export{k as InternalRuleType,I as createRule,xe as createScopedUseRegle,we as createVariant,ge as defineRegleConfig,De as defineRules,_e as extendRegleConfig,ae as flatErrors,he as inferRules,ve as mergeRegles,Te as narrowVariant,Oe as refineRules,M as unwrapRuleParameters,Se as useCollectScope,pe as useRegle,de as useRootStorage,Ce as useScopedRegle,Ee as variantToRef};
|
|
1
|
+
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t=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 D(e,t,n){let r,i=(...i)=>new Promise(a=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,n||Promise.resolve(e.apply(this,[...i])).then(a)},t),n&&!r&&Promise.resolve(e.apply(this,[...i])).then(a)});return i.cancel=()=>{clearTimeout(r),r=void 0},i}function O(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(!O(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];return!(w(e)&&w(t)&&s&&(r||!r&&n)&&!O(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const k={Inline:`__inline`,Async:`__async`};function A(e,t){return e.some(e=>e[t])}function j(e,t){return e.reduce((e,n)=>{let r=n[t]||[];return e.concat(r)},[])}function M(e){try{return e.map(e=>p(e))}catch{return[]}}function N(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function P(e){let t=e.toString(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function F(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===k.Async||n.constructor.name===`AsyncFunction`,s={validator(n,...r){return e.validator(n,...M(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:M(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:M(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:M(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...M(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)}},c=a({...s,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:N(t),_brand:x});return c}function I(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=F({...e,async:n},...t);if(P(e.validator)>1){let t=function(...t){return F(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 L(){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;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?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`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=M(i._params),n=M(r._params);return e?.[t]===n?.[t]}}):!0}):!1}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}}function R(e){return w(e.value)}function z(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const B={LessThan:-1,EqualTo:0,GreaterThan:1};function V(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 B.GreaterThan;if(i>t)return B.LessThan;if(!isNaN(t)&&isNaN(i))return B.GreaterThan;if(isNaN(t)&&!isNaN(i))return B.LessThan}return B.EqualTo}const H=V(g,`3.5.0`)!==-1;function U(){return Math.floor(Math.random()*Date.now()).toString()}function W(){if(typeof window>`u`)return U();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.toString(10)}}function G(e){return r()?(c(e),!0):!1}function K(e){let n=!1,r,i=t(!0);return(...t)=>(n||(r=i.run(()=>e(...t)),n=!0),r)}function q(e,t){return R(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>X(t)||typeof t==`function`)}function J(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function Y(e){return!!e.value&&w(e.value)}function X(e){return w(e)&&`_validator`in e}function Z(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({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;let a={$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}};return a}),r=n.filter(e=>!!e),i=r.reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),a=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],o=e.$error?e.$schemaErrors??[]:[];return[...i,...a,...o]}function re({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 ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>Q(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>Q(t,n,[e])).flat()}function Q(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({error:e,path:r?.join(`.`)??``})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>Q(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>Q(n,t,r?.concat(e))).flat()}function oe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,$debounce:d,modifiers:f}){let p=t(),m={},h,g=u(!1),v=u(!1),{$pending:y,$valid:x,$metadata:S,$validating:C}=c.trySetRuleStatusRef(`${s}.${i}`);function w(){p=t(),m=p.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:x.value,$invalid:!x.value,$pending:y.value},$params:C.value,...S.value})),p=e(()=>Z(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Z(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}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Z(r)&&r.value.type?r.value.type:i),v=e(()=>Z(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:M(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:v,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),h=_(m?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&m.$fieldError.value)&&k()})}w();function T(){x.value=!0,m.$fieldDirty.value&&(y.value=!0)}async function E(){let e=!1;try{let t=m.$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,...m.$params.value),r=a.value;T();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,S.value=n}}catch{e=!1}finally{y.value=!1}return e}let O=D(E,d??200);async function k(){try{C.value=!0;let e=!1;if(v.value=!0,X(r.value)&&r.value._async)e=await O();else{let t=m.$validator.value,n=t(a.value,...m.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,S.value=r}}return x.value=e,e}catch{return!1}finally{C.value=!1,v.value=!1}}function A(){x.value=!0,S.value={},y.value=!1,C.value=!1,w()}function j(){h(),p.stop(),p=t()}return l({...m,$pending:y,$valid:x,$metadata:S,$haveAsync:g,$maybePending:v,$validating:C,$parse:k,$unwatch:j,$watch:w,$reset:A})}function se({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,shortcuts:T,onValidate:k}){let A=t(),j,M=[],N,P,F,I,L=()=>{};function R(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);K.value=s,V();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,oe({modifiers:{$silent:j.$silent,$rewardEarly:j.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:K.value.$debounce})])}G.value=Object.fromEntries(u),j.processShortcuts(),z(),t?.valid!=null&&(j.$dirty.value=c.getDirtyState(o),(j.$dirty.value&&!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L()),c.addRuleDeclEntry(o,e)}function z(){L=j.$debounce.value?D(W,j.$debounce.value??j.$haveAnyAsyncRule?100:0):W}function B(){if(G.value)for(let e of Object.values(G.value))e.$unwatch();P(),I?.(),j.$dirty.value&&c.setDirtyEntry(o,j.$dirty.value),N?.(),A.stop(),A=t();for(let e of M)e.stop();M=[],y?.(),F?.()}function V(){if(G.value)for(let e of Object.values(G.value))e.$watch();j=A.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>K.value.$debounce),f=e(()=>K.value.$deepCompare==null?!1:K.value.$deepCompare),_=e(()=>K.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):K.value.$lazy),y=e(()=>K.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):K.value.$rewardEarly),x=e(()=>K.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):K.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:K.value.$silent==null?h(d.silent)==null?!1:h(d.silent):K.value.$silent),w=e(()=>K.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):K.value.$autoDirty),D=e(()=>{for(let e of Object.values(G.value))if(e.$validating)return!0;return!1}),k=e({get:()=>n.value,set(e){N(),n.value=e,U()}}),A=e(()=>H.value&&!V.value&&i.value),j=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),P=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),F=e(()=>j.value.map(e=>e.$message)),I=e(()=>P.value.map(e=>e.$message)),L=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?E(S.value).getDate()!==E(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!O(n.value,S.value,K.value.$deepCompare):S.value!==n.value:!1),R=e(()=>L.value),z=e(()=>re({field:{$rules:G.value}})),B=e(()=>(C.value||o.value)&&!(H.value||V.value)),V=e(()=>a.value||!y.value?Object.entries(G.value).some(([e,t])=>t.$pending):!1),H=e(()=>p?.value?.length||m?.value?.length?!0:q.value?!1:!y.value||y.value?Object.values(G.value).some(e=>!e.$valid||e.$maybePending):!1),W=e(()=>s),q=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),J=e(()=>{if(p?.value?.length||q.value)return!1;if(i.value&&!b(n.value)&&!D.value&&!V.value){if(g)return!m?.value?.length;{let e=Object.values(G.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),Y=e(()=>Object.values(G.value).some(e=>e.$haveAsync));function X(){T?.fields&&Object.entries(T.fields).forEach(([e,r])=>{let a=t();Z[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:k,$rules:G,$error:A,$pending:V,$invalid:H,$correct:J,$errors:F,$ready:B,$silentErrors:I,$anyDirty:o,$tooltips:z,$name:W,$inactive:q,$edited:L,$anyEdited:R}))}),e}),M.push(a)})}let Z={};return{$error:A,$pending:V,$invalid:H,$correct:J,$debounce:c,$deepCompare:f,$lazy:_,$ready:B,$issues:j,$silentIssues:P,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:Y,$shortcuts:Z,$validating:D,$tooltips:z,$dirty:i,processShortcuts:X,$silentValue:k,$inactive:q}}),U(),P=_(j.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(G.value).forEach(t=>{t.$fieldDirty=e})}),I=_([j.$error,j.$correct,j.$invalid,j.$pending],()=>{Object.values(G.value).forEach(e=>{e.$fieldError=j.$error.value,e.$fieldInvalid=j.$invalid.value,e.$fieldPending=j.$pending.value,e.$fieldCorrect=j.$correct.value})}),F=_(j.$haveAnyAsyncRule,z)}function U(){N=_(n,()=>{j.$autoDirty.value&&!j.$silent.value&&(j.$dirty.value||(j.$dirty.value=!0)),r.value instanceof Function&&R(),(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L(),j.$clearExternalErrorsOnChange.value&&Z()},{deep:x?!0:H?1:!0})}function W(){Object.values(G.value).forEach(e=>{e.$parse()})}let G=u({}),K=u({});R();function q(e,t){if(Z(),j.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&Z(),!t)for(let e of Object.values(G.value))e.$reset();if(!j.$lazy.value&&!j.$silent.value&&!t)for(let e of Object.values(G.value))e.$parse()}function J(e=!0,t=!1){j.$dirty.value||(j.$dirty.value=!0),t&&e?(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L():e&&L()}async function Y(){try{if(g)return k?(J(!1),k()):{valid:!1,data:n.value};let e=n.value;if(!j.$dirty.value)j.$dirty.value=!0;else if(!j.$silent.value&&j.$dirty.value&&!j.$pending.value)return{valid:!j.$error.value,data:e};if(g)return{valid:!m?.value?.length,data:e};if(b(G.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.values(G.value).map(e=>e.$parse())),r=t.every(e=>e.status===`fulfilled`&&e.value===!0);return{valid:r,data:e}}catch{return{valid:!1,data:n.value}}}function X(e=!0){return j.$dirty.value?n.value:e?{_null:!0}:null}function Z(){p?.value?.length&&(p.value=[])}!j.$lazy.value&&!j.$dirty.value&&!j.$silent.value&&L();let{$shortcuts:ee,$validating:te,$autoDirty:ie,$rewardEarly:ae,$clearExternalErrorsOnChange:Q,$haveAnyAsyncRule:se,$debounce:ce,$lazy:le,...ue}=j;return l({...ue,$externalErrors:p,$value:n,$initialValue:S,$rules:G,...ee,$path:a,$reset:q,$touch:J,$validate:Y,$unwatch:B,$watch:V,$extractDirtyFields:X,$clearExternalErrors:Z})}function ce({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,shortcuts:m,fieldName:h,schemaMode:g}){let _=s.value?.$id??l.$key??W(),v=`${r}.${String(_)}`,y=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:_,enumerable:!1,configurable:!1,writable:!1}}));let b=f(u?.value??[],i),x=e(()=>d?.value?.[i]),S=$({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:y,cachePath:v,storage:o,options:a,externalErrors:b,schemaErrors:x,initialState:p,shortcuts:m,fieldName:h,schemaMode:g});if(S){let e=s.value?.$id;S.$id=e??String(_),o.addArrayStatus(t,S.$id,S)}return S}function le({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,shortcuts:g,fieldName:y}){let x=t(),S,w=t(),T,E=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let D=u(),O=u(n.value),k=u({}),A,j,M=u({}),N=o.getCollectionsEntry(a);T=w.run(()=>{let t=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=>X(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),P(),R();function P(){k.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(D.value=W(),Object.defineProperties(n.value,{$id:{value:D.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(D.value=n.value.$id)),O.value=M.value.$value,Array.isArray(n.value)&&!T.isPrimitiveArray.value?N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=z(r.value.$each,f(()=>t),n);l&&E.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each),b=ce({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,shortcuts:g,fieldName:y,schemaMode:p});return b||null}).filter(e=>!!e):N.value=[],M.value=se({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,shortcuts:g,fieldName:y,schemaMode:p})}function F(){if(Array.isArray(n.value)&&!T.isPrimitiveArray.value){let t=C(N.value);N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&N.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(D.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=z(r.value.$each,l,n);t&&E.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]),v=ce({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),shortcuts:g,fieldName:y,schemaMode:p});return v||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(D.value,t.toString())})}else N.value=[]}function I(){A=_(n,()=>{j?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!D.value?P():F(),L()},{deep:H?1:!0,flush:`pre`}),L()}function L(){j=_(n,()=>{S.$autoDirty.value&&!S.$silent.value&&M.value.$touch(!1,!0)},{flush:`post`})}function R(){I(),x=t(),S=x.run(()=>{let r=e({get:()=>n.value,set(e){A?.(),j?.(),n.value=e,I()}}),i=e(()=>M.value.$dirty&&(!N.value.length||N.value.every(e=>e.$dirty))),o=e(()=>M.value.$anyDirty||N.value.some(e=>e.$anyDirty)),c=e(()=>M.value.$invalid||N.value.some(e=>e.$invalid)),d=e(()=>(b(M.value.$rules)?!0:M.value.$correct)&&(!N.value.length||N.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>M.value.$error||N.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>M.value.$pending||N.value.some(e=>e.$pending)),x=e(()=>!!N.value.length&&N.value.every(e=>e.$edited)),S=e(()=>M.value.$anyEdited||N.value.some(e=>e.$anyEdited)),C=e(()=>({$self:M.value.$issues,$each:N.value.map(e=>e.$issues)})),w=e(()=>({$self:M.value.$errors,$each:N.value.map(e=>e.$errors)})),T=e(()=>({$self:M.value.$silentErrors,$each:N.value.map(e=>e.$silentErrors)})),D=e(()=>k.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):k.value.$rewardEarly),O=e(()=>D.value?!0:k.value.$silent==null?h(s.silent)==null?!1:h(s.silent):k.value.$silent),P=e(()=>k.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):k.value.$autoDirty),F=e(()=>y);function L(){g?.collections&&Object.entries(g?.collections).forEach(([e,s])=>{let h=t();R[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:c,$correct:d,$errors:w,$silentErrors:T,$initialValue:m,$ready:p,$anyDirty:o,$name:F,$each:N,$self:M,$value:n,$edited:x,$anyEdited:S,$issues:C}))}),e}),E.push(h)})}let R={};return L(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:w,$silentErrors:T,$ready:p,$name:F,$shortcuts:R,$silentValue:r,$edited:x,$anyEdited:S,$rewardEarly:D,$silent:O,$autoDirty:P,$issues:C}}),T.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 B(){A?.(),M.value&&M.value.$unwatch(),N.value&&N.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),x.stop(),x=t(),w.stop(),w=t(!0),E.forEach(e=>e.stop()),E=[]}function V(e=!0,t=!1){M.value.$touch(e,t),N.value.forEach(n=>{n.$touch(e,t)})}function U(e,t){if(B(),!t)if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&K(),M.value.$reset(e,t),N.value.forEach(t=>{t.$reset(e,!0)}),t||P()}async function G(){let e=n.value;try{let t=await Promise.allSettled([M.value.$validate(),...N.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function K(){M.value.$clearExternalErrors(),N.value.forEach(e=>{e.$clearExternalErrors()})}function q(e=!0){let t=N.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:J,...Y}=S;return l({$self:M,...Y,...J,$path:a,$each:N,$value:n,$initialValue:m,$validate:G,$unwatch:B,$watch:R,$touch:V,$reset:U,$extractDirtyFields:q,$clearExternalErrors:K})}function ue({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,fieldName:g,...y}){let x=t(),S,T=[],E=null,D=null,O=null,k=null,M=null;async function N(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,$({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,fieldName:n,...y})]),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,$({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]})),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),h=e(()=>({}));return[t,$({state:l,rulesDef:h,path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,fieldName:t,...y})]})),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,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]}));P.value={...l,...u,...d,...p},t&&L()}let P=y.storage.getFieldsEntry(a);N();function F(){s&&(O=_(s,()=>{R(),N()},{deep:!0}))}function I(){k=_(r,()=>{R(),N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(E?.(),E=_(o,()=>{R(),N()},{deep:!0,flush:`pre`}),F()),d&&(D?.(),D=_(d,()=>{R(),N()},{deep:!0,flush:`post`})),I(),S=x.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,N()}}),o=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}),s=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{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}),d=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!te(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?y.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>{if(!te(t))return t?.$correct;let n=`required`in t.$rules&&t.$rules.required.$active;return n?t.$correct:!t.$invalid&&!t.$pending}):!1}),f=e(()=>{let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(y.options.rewardEarly)==null?!1:h(y.options.rewardEarly)),b=e(()=>h(y.options.silent)==null?!!_.value:h(y.options.silent)),x=e(()=>h(y.options.autoDirty)==null?!0:h(y.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||E.value)),w=u(!1),E=e(()=>{if(w.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),D=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),O=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),k=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),M=e(()=>{if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),F=e(()=>{for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),I=e(()=>g);function L(){y.shortcuts?.nested&&Object.entries(y.shortcuts.nested).forEach(([e,n])=>{let p=t();B[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$pending:E,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:I,$silentErrors:k,$initialValue:m,$errors:O,$fields:P,$edited:M,$anyEdited:F,$issues:D}))}),e}),T.push(p)})}let z=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,A(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,j(t,e)]))}]:[])):{},set(){}}),B={};return L(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:E,$issues:D,$errors:O,$silentErrors:k,$ready:C,$name:I,$shortcuts:B,$groups:z,$silentValue:a,$edited:M,$anyEdited:F,$localPending:w,$autoDirty:x,$silent:b,$value:n}})}function R(){if(E?.(),O?.(),k?.(),M?.(),D?.(),T=[],S={},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()}function B(e,t){if(O?.(),R(),!t)if(e?.toInitialState)r.value=C({...m.value??{}});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);for(let t of Object.values(P.value))t.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||N()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n.$touch(e,t)}function H(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(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)}async function W(){try{if(y.schemaMode)return y.onValidate?(V(!1),S.$localPending.value=!0,y.onValidate()):{valid:!1,data:r.value};{let e=r.value,t=await Promise.allSettled(Object.values(P.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`&&e?.value.valid===!0);return{valid:n,data:e}}}catch{return{valid:!1,data:r.value}}finally{S.$localPending.value=!1}}let{$shortcuts:G,$localPending:K,...q}=S,J=l({...q,...G,$path:i,$initialValue:m,$fields:P,$reset:B,$touch:V,$validate:W,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)))delete J[e];for(let e of Object.values(P.value))Object.assign(J,{[e.$name]:e})}),J}function $({rulesDef:e,...n}){if(J(e,n.state,n.schemaMode))return le({rulesDef:e,...n});if(q(n.state,e)){if(R(n.state))return ue({rulesDef:e,...n});{let r=t(),i=r.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:a,...o}=n;return ue({rulesDef:e,...o,state:i.fakeState})}}else if(Y(e))return se({rulesDef:e,...n})}function de({initialState:e,options:t,scopeRules:n,state:i,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:d=!1,onValidate:f}){let p=L(),m=u();return q(i,n)?m.value=ue({rootRules:n,rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaErrors:s,rootSchemaErrors:s,schemaMode:d,onValidate:f}):Y(n)&&(m.value=se({rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaMode:d,schemaErrors:s,onValidate:f})),r()&&c(()=>{m.value?.$unwatch()}),l({regle:m})}function fe(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o,s){let c=i(o)?o:typeof o==`function`?void 0:e(()=>o),l={...a,...s},f=i(n)?n:u(n),p=d(c??{});typeof o==`function`&&v(()=>{p.value=o(f),m(p)});let h=u(w(f.value)?{...C(f.value)}:C(f.value)),g=de({scopeRules:p,state:f,options:l,initialState:h,customRules:t,shortcuts:r});return{r$:g.regle}}return o}const pe=fe();function me(){function e(e,t){return t}return e}const he=me();function ge({rules:e,modifiers:t,shortcuts:n}){let r=fe(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let i=me();return{useRegle:r,inferRules:i}}function _e(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=fe(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=me();return{useRegle:c,inferRules:l}}function ve(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.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),g=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),_=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),v=e(()=>r?Object.values(t):t);function y(e){Object.values(t).forEach(t=>{t.$reset(e)})}function b(){Object.values(t).forEach(e=>{e.$touch()})}function x(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function S(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function C(){try{let e=i.value,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function ye(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return ve(t,!n.asRecord)}else return ve(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function be(t,r){let i=r??pe,a=(r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${W()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),G(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}};return{useScopedRegle:a}}function xe(e){let t=e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):K(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=be(n,e?.customUseRegle),{useCollectScope:i}=ye(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Se,useScopedRegle:Ce}=xe();function we(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(X(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function Te(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ee(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),Te(r.value,t,n)?a.value=r.value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function De(e){return e}function Oe(e,t){return n=>T({...e},t(n))}export{k as InternalRuleType,I as createRule,xe as createScopedUseRegle,we as createVariant,ge as defineRegleConfig,De as defineRules,_e as extendRegleConfig,ae as flatErrors,he as inferRules,ve as mergeRegles,Te as narrowVariant,Oe as refineRules,M as unwrapRuleParameters,Se as useCollectScope,pe as useRegle,de as useRootStorage,Ce as useScopedRegle,Ee as variantToRef};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"description": "Headless form validation library for Vue 3",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"pinia": ">=2.2.5",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@total-typescript/ts-reset": "0.6.1",
|
|
16
16
|
"@types/node": "22.15.33",
|
|
17
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
18
|
-
"@typescript-eslint/parser": "8.
|
|
17
|
+
"@typescript-eslint/eslint-plugin": "8.37.0",
|
|
18
|
+
"@typescript-eslint/parser": "8.37.0",
|
|
19
19
|
"@vue/test-utils": "2.4.6",
|
|
20
20
|
"eslint": "9.29.0",
|
|
21
21
|
"eslint-config-prettier": "10.1.5",
|