@regle/core 0.7.5 → 0.8.0
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.cjs +24 -20
- package/dist/regle-core.d.cts +30 -3
- package/dist/regle-core.d.ts +30 -3
- package/dist/regle-core.min.cjs +2 -2
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +24 -20
- package/package.json +1 -1
package/dist/regle-core.cjs
CHANGED
|
@@ -87,6 +87,25 @@ function toDate(argument) {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
// ../shared/utils/debounce.ts
|
|
91
|
+
function debounce(func, wait, immediate) {
|
|
92
|
+
let timeout;
|
|
93
|
+
const debouncedFn = (...args) => new Promise((resolve) => {
|
|
94
|
+
clearTimeout(timeout);
|
|
95
|
+
timeout = setTimeout(() => {
|
|
96
|
+
timeout = undefined;
|
|
97
|
+
{
|
|
98
|
+
Promise.resolve(func.apply(this, [...args])).then(resolve);
|
|
99
|
+
}
|
|
100
|
+
}, wait);
|
|
101
|
+
});
|
|
102
|
+
debouncedFn.cancel = () => {
|
|
103
|
+
clearTimeout(timeout);
|
|
104
|
+
timeout = undefined;
|
|
105
|
+
};
|
|
106
|
+
return debouncedFn;
|
|
107
|
+
}
|
|
108
|
+
|
|
90
109
|
// src/types/rules/rule.internal.types.ts
|
|
91
110
|
var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
|
|
92
111
|
InternalRuleType2["Inline"] = "__inline";
|
|
@@ -376,25 +395,6 @@ function unwrapGetter(getter, value, index) {
|
|
|
376
395
|
}
|
|
377
396
|
return { scope, unwrapped };
|
|
378
397
|
}
|
|
379
|
-
|
|
380
|
-
// src/utils/debounce.ts
|
|
381
|
-
function debounce(func, wait, immediate) {
|
|
382
|
-
let timeout;
|
|
383
|
-
const debouncedFn = (...args) => new Promise((resolve) => {
|
|
384
|
-
clearTimeout(timeout);
|
|
385
|
-
timeout = setTimeout(() => {
|
|
386
|
-
timeout = undefined;
|
|
387
|
-
{
|
|
388
|
-
Promise.resolve(func.apply(this, [...args])).then(resolve);
|
|
389
|
-
}
|
|
390
|
-
}, wait);
|
|
391
|
-
});
|
|
392
|
-
debouncedFn.cancel = () => {
|
|
393
|
-
clearTimeout(timeout);
|
|
394
|
-
timeout = undefined;
|
|
395
|
-
};
|
|
396
|
-
return debouncedFn;
|
|
397
|
-
}
|
|
398
398
|
function versionCompare(current, other) {
|
|
399
399
|
const cp = String(current).split(".");
|
|
400
400
|
const op = String(other).split(".");
|
|
@@ -630,6 +630,10 @@ function createReactiveRuleStatus({
|
|
|
630
630
|
let ruleResult = false;
|
|
631
631
|
try {
|
|
632
632
|
const validator = scopeState.$validator.value;
|
|
633
|
+
if (typeof validator !== "function") {
|
|
634
|
+
console.error(`${path}: Incorrect rule format, it needs to be either a function or created with "createRule".`);
|
|
635
|
+
return false;
|
|
636
|
+
}
|
|
633
637
|
const resultOrPromise = validator(state.value, ...scopeState.$params.value);
|
|
634
638
|
let cachedValue = state.value;
|
|
635
639
|
updatePendingState();
|
|
@@ -778,7 +782,7 @@ function createReactiveFieldStatus({
|
|
|
778
782
|
define$commit();
|
|
779
783
|
if (storeResult?.valid != null) {
|
|
780
784
|
scopeState.$dirty.value = storage.getDirtyState(path);
|
|
781
|
-
if (scopeState.$dirty.value) {
|
|
785
|
+
if (scopeState.$dirty.value && scopeState.$autoDirty.value || scopeState.$rewardEarly.value && scopeState.$error.value) {
|
|
782
786
|
$commit();
|
|
783
787
|
}
|
|
784
788
|
}
|
package/dist/regle-core.d.cts
CHANGED
|
@@ -1407,20 +1407,47 @@ type SuperCompatibleRegleRoot = SuperCompatibleRegleStatus & {
|
|
|
1407
1407
|
$groups?: {
|
|
1408
1408
|
[x: string]: RegleValidationGroupOutput;
|
|
1409
1409
|
};
|
|
1410
|
+
$validate: () => Promise<SuperCompatibleRegleResult>;
|
|
1410
1411
|
};
|
|
1411
1412
|
type ScopedInstancesRecord = Record<string, Record<string, SuperCompatibleRegleRoot>> & {
|
|
1412
1413
|
'~~global': Record<string, SuperCompatibleRegleRoot>;
|
|
1413
1414
|
};
|
|
1414
1415
|
type ScopedInstancesRecordLike = Partial<ScopedInstancesRecord>;
|
|
1415
|
-
|
|
1416
|
+
type SuperCompatibleRegleResult = $InternalRegleResult;
|
|
1417
|
+
interface SuperCompatibleRegleStatus extends SuperCompatibleRegleCommonStatus {
|
|
1416
1418
|
$fields: {
|
|
1417
1419
|
[x: string]: unknown;
|
|
1418
1420
|
};
|
|
1419
1421
|
readonly $errors: Record<string, RegleValidationErrors<any>>;
|
|
1420
1422
|
readonly $silentErrors: Record<string, RegleValidationErrors<any>>;
|
|
1421
1423
|
$extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
|
|
1422
|
-
$validate
|
|
1424
|
+
$validate?: () => Promise<SuperCompatibleRegleResult>;
|
|
1425
|
+
}
|
|
1426
|
+
type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldValid' | '$fieldError' | '$unwatch' | '$watch'>;
|
|
1427
|
+
type SuperCompatibleRegleCommonStatus = Omit<RegleCommonStatus, '$pending'> & {
|
|
1428
|
+
$pending?: boolean;
|
|
1429
|
+
};
|
|
1430
|
+
interface SuperCompatibleRegleFieldStatus extends SuperCompatibleRegleCommonStatus {
|
|
1431
|
+
$value: any;
|
|
1432
|
+
$silentValue: any;
|
|
1433
|
+
readonly $rules: Record<string, SuperCompatibleRegleRuleStatus>;
|
|
1434
|
+
readonly $externalErrors?: string[];
|
|
1435
|
+
readonly $errors: string[];
|
|
1436
|
+
readonly $inactive: boolean;
|
|
1437
|
+
readonly $silentErrors: string[];
|
|
1438
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => any;
|
|
1439
|
+
$validate?: () => Promise<SuperCompatibleRegleResult>;
|
|
1440
|
+
}
|
|
1441
|
+
interface SuperCompatibleRegleCollectionStatus extends Omit<SuperCompatibleRegleStatus, '$fields' | '$errors' | '$silentErrors'> {
|
|
1442
|
+
readonly $self: SuperCompatibleRegleFieldStatus;
|
|
1443
|
+
readonly $each: Array<SuperCompatibleRegleStatus | SuperCompatibleRegleFieldStatus>;
|
|
1444
|
+
readonly $errors: SuperCompatibleRegleCollectionErrors;
|
|
1445
|
+
readonly $silentErrors: SuperCompatibleRegleCollectionErrors;
|
|
1446
|
+
readonly $externalErrors?: string[];
|
|
1447
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => any[];
|
|
1448
|
+
$validate?: () => Promise<SuperCompatibleRegleResult>;
|
|
1423
1449
|
}
|
|
1450
|
+
type SuperCompatibleRegleCollectionErrors = $InternalRegleCollectionErrors;
|
|
1424
1451
|
/**
|
|
1425
1452
|
* @public
|
|
1426
1453
|
*/
|
|
@@ -1785,4 +1812,4 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
|
|
|
1785
1812
|
};
|
|
1786
1813
|
};
|
|
1787
1814
|
|
|
1788
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleRoot, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
|
|
1815
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
|
package/dist/regle-core.d.ts
CHANGED
|
@@ -1407,20 +1407,47 @@ type SuperCompatibleRegleRoot = SuperCompatibleRegleStatus & {
|
|
|
1407
1407
|
$groups?: {
|
|
1408
1408
|
[x: string]: RegleValidationGroupOutput;
|
|
1409
1409
|
};
|
|
1410
|
+
$validate: () => Promise<SuperCompatibleRegleResult>;
|
|
1410
1411
|
};
|
|
1411
1412
|
type ScopedInstancesRecord = Record<string, Record<string, SuperCompatibleRegleRoot>> & {
|
|
1412
1413
|
'~~global': Record<string, SuperCompatibleRegleRoot>;
|
|
1413
1414
|
};
|
|
1414
1415
|
type ScopedInstancesRecordLike = Partial<ScopedInstancesRecord>;
|
|
1415
|
-
|
|
1416
|
+
type SuperCompatibleRegleResult = $InternalRegleResult;
|
|
1417
|
+
interface SuperCompatibleRegleStatus extends SuperCompatibleRegleCommonStatus {
|
|
1416
1418
|
$fields: {
|
|
1417
1419
|
[x: string]: unknown;
|
|
1418
1420
|
};
|
|
1419
1421
|
readonly $errors: Record<string, RegleValidationErrors<any>>;
|
|
1420
1422
|
readonly $silentErrors: Record<string, RegleValidationErrors<any>>;
|
|
1421
1423
|
$extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
|
|
1422
|
-
$validate
|
|
1424
|
+
$validate?: () => Promise<SuperCompatibleRegleResult>;
|
|
1425
|
+
}
|
|
1426
|
+
type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldValid' | '$fieldError' | '$unwatch' | '$watch'>;
|
|
1427
|
+
type SuperCompatibleRegleCommonStatus = Omit<RegleCommonStatus, '$pending'> & {
|
|
1428
|
+
$pending?: boolean;
|
|
1429
|
+
};
|
|
1430
|
+
interface SuperCompatibleRegleFieldStatus extends SuperCompatibleRegleCommonStatus {
|
|
1431
|
+
$value: any;
|
|
1432
|
+
$silentValue: any;
|
|
1433
|
+
readonly $rules: Record<string, SuperCompatibleRegleRuleStatus>;
|
|
1434
|
+
readonly $externalErrors?: string[];
|
|
1435
|
+
readonly $errors: string[];
|
|
1436
|
+
readonly $inactive: boolean;
|
|
1437
|
+
readonly $silentErrors: string[];
|
|
1438
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => any;
|
|
1439
|
+
$validate?: () => Promise<SuperCompatibleRegleResult>;
|
|
1440
|
+
}
|
|
1441
|
+
interface SuperCompatibleRegleCollectionStatus extends Omit<SuperCompatibleRegleStatus, '$fields' | '$errors' | '$silentErrors'> {
|
|
1442
|
+
readonly $self: SuperCompatibleRegleFieldStatus;
|
|
1443
|
+
readonly $each: Array<SuperCompatibleRegleStatus | SuperCompatibleRegleFieldStatus>;
|
|
1444
|
+
readonly $errors: SuperCompatibleRegleCollectionErrors;
|
|
1445
|
+
readonly $silentErrors: SuperCompatibleRegleCollectionErrors;
|
|
1446
|
+
readonly $externalErrors?: string[];
|
|
1447
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => any[];
|
|
1448
|
+
$validate?: () => Promise<SuperCompatibleRegleResult>;
|
|
1423
1449
|
}
|
|
1450
|
+
type SuperCompatibleRegleCollectionErrors = $InternalRegleCollectionErrors;
|
|
1424
1451
|
/**
|
|
1425
1452
|
* @public
|
|
1426
1453
|
*/
|
|
@@ -1785,4 +1812,4 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
|
|
|
1785
1812
|
};
|
|
1786
1813
|
};
|
|
1787
1814
|
|
|
1788
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleRoot, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
|
|
1815
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function Z(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Lt(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 Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function gt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let o=n[t]||[];return r.concat(o)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function $t(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,o=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...$){return e.validator(c,...ee($.length?$:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let $=e.validator(c,...ee(t)),m;return $ instanceof Promise?$.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:o,_params:vt(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if($t(e.validator)>1){let o=function(...s){return He(e,...s)};return o.validator=r.validator,o.message=r.message,o.active=r.active,o.tooltip=r.tooltip,o.type=r.type,o.exec=r.exec,o._validator=r.validator,o._message=r.message,o._active=r.active,o._tooltip=r.tooltip,o._type=e.type,o._message_pacthed=false,o._tooltip_pacthed=false,o._async=n,o}else return r}throw new Error("Validator must be a function")}function qe(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),o=vue.shallowRef(new Map),s=vue.shallowRef(new Map);function R(v){let b=t.value.get(v);if(b)return b;{let E=vue.ref({});return t.value.set(v,E),E}}function c(v){let b=r.value.get(v);if(b)return b;{let E=vue.ref([]);return r.value.set(v,E),E}}function $(v,b,E){s.value.set(`${v}-${b}`,E);}function m(v,b){return s.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&s.value.delete(`${v}-${b}`);}function M(v,b){n.value.set(v,b);}function x(v){return n.value.get(v)??false}function P(v,b){e.value.set(v,b);}function O(v,b){let E=e.value.get(v);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a(v,b){let E=Object.keys(b),i=Object.keys(v);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let l=v[V],u=b[V];return !u||!l||typeof l=="function"||typeof u=="function"||typeof l=="number"||typeof l=="boolean"?false:l._params?l._params?.every((C,_)=>{if(typeof u=="number"||typeof u=="boolean")return true;{let k=ee(u._params),J=ee(l._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=o.value.get(v);if(b)return b;{let E=vue.ref(false),i=vue.ref(true),S=vue.ref({}),V=vue.ref(false);return o.value.set(v,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),o.value.clear(),s.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:M,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:s}}function Fe(e){return ne(e.value)}function Ke(e,t,r){let n=vue.effectScope(),o;return e instanceof Function?o=n.run(()=>e(t,r??0)):o=e,{scope:n,unwrapped:o}}function Ve(e,t,r){let n,o=(...s)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...s])).then(R);},t);});return o.cancel=()=>{clearTimeout(n),n=undefined;},o}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let o=0;o<Math.min(r.length,n.length);o++){let s=Number(r[o]),R=Number(n[o]);if(s>R)return 1;if(R>s)return -1;if(!isNaN(s)&&isNaN(R))return 1;if(isNaN(s)&&!isNaN(R))return -1}return 0}var _e=Zt(vue.version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function ht(e){let t=false,r,n=vue.effectScope(true);return (...o)=>(t||(r=n.run(()=>e(...o)),t=true),r)}function bt(e,t){return Fe(e)||ne(t.value)&&!Z(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ne(e.value)}function we(e){return ne(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ne(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function It({customMessages:e,rule:t,ruleKey:r,state:n,path:o,storage:s,$debounce:R,modifiers:c}){let $=vue.effectScope(),m={},h,M=vue.ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=s.trySetRuleStatusRef(`${o}.${r}`);function w(){$=vue.effectScope(),m=$.run(()=>{let l=vue.ref(false),u=vue.ref(false),C=vue.ref(true),_=vue.ref(false),k=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:u.value,$dirty:l.value,$pending:_.value,$valid:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:x.value},$params:d.value,...O.value})),I=vue.computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let Q=`_${p}_patched`;A&&!t.value[Q]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=vue.computed(()=>{let p=L("message");return Z(p)&&(p="This field is not valid"),p}),de=vue.computed(()=>L("tooltip")),pe=vue.computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>Pe(t)?t.value.validator:t.value),d=vue.computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),f=vue.computed(()=>`${o}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:u,$fieldDirty:l,$fieldPending:_,$fieldInvalid:C}}),h=vue.watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){P.value=true,m.$fieldDirty.value&&(x.value=true);}async function b(){let l=false;try{let u=m.$validator.value,C=u(n.value,...m.$params.value),_=n.value;v();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")l=k;else {let{$valid:J,...I}=k;l=J,O.value=I;}}catch{l=false;}finally{x.value=false;}return l}let E=Ve(b,R??200);async function i(){try{a.value=!0;let l=!1;if(we(t.value)&&t.value._async)l=await E();else {let u=m.$validator.value,C=u(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")l=C;else {let{$valid:_,...k}=C;l=_,O.value=k;}}return P.value=l,l}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},x.value=false,a.value=false,w();}function V(){h(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:x,$valid:P,$metadata:O,$haveAsync:M,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:o,storage:s,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:M,initialState:x,shortcuts:P}){let O=vue.effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function l(){let y=t.value,G=s.checkRuleDeclEntry(n,y);L.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,D])=>{if(D){let se=vue.toRef(()=>D);return [B,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:B,state:e,path:n,storage:s,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),u(),G?.valid!=null&&(a.$dirty.value=s.getDirtyState(n),a.$dirty.value&&V()),s.addRuleDeclEntry(n,y);}function u(){V=a.$debounce.value?Ve(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&s.setDirtyEntry(n,a.$dirty.value),v?.(),b?.(),O.stop(),O=vue.effectScope(),w.forEach(y=>y.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$watch();}),a=O.run(()=>{let y=vue.ref(false),G=vue.ref(false),B=vue.computed(()=>y.value),D=vue.computed(()=>L.value.$debounce),se=vue.computed(()=>L.value.$lazy!=null?L.value.$lazy:vue.unref(R.lazy)!=null?vue.unref(R.lazy):false),le=vue.computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:vue.unref(R.rewardEarly)!=null?vue.unref(R.rewardEarly):false),ge=vue.computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:vue.unref(R.clearExternalErrorsOnChange)!=null?vue.unref(R.clearExternalErrorsOnChange):true),U=vue.computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:vue.unref(R.autoDirty)!=null?vue.unref(R.autoDirty):!le.value),j=vue.computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$validating)),K=vue.computed({get:()=>e.value,set(ae){v(),e.value=ae,k();}}),ye=vue.computed(()=>ve.value&&!Oe.value&&y.value),lt=vue.computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value}})),ot=vue.computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value},silent:true})),We=vue.computed(()=>y.value?x.value instanceof Date&&e.value instanceof Date?Be(x.value).getDate()!==Be(e.value).getDate():x.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(x.value)?e.value.length!==x.value.length:x.value!==e.value:false),st=vue.computed(()=>We.value),ut=vue.computed(()=>Ct({field:{$rules:I.value}})),it=vue.computed(()=>U.value?B.value&&!(ve.value||Oe.value):!(ve.value||Oe.value)),Oe=vue.computed(()=>G.value||!le.value?Object.entries(I.value).some(([ae,ue])=>ue.$pending):false),ve=vue.computed(()=>c?.value?.length||$?.value?.length?true:Me.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=vue.computed(()=>o),Me=vue.computed(()=>!!(Z(I.value)&&!m)),ft=vue.computed(()=>c?.value?.length||Me.value?false:y.value&&!Z(e.value)&&!j.value?m?!$?.value?.length:Object.values(I.value).every(ae=>ae.$valid&&ae.$active):false),Wt=vue.computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$haveAsync));function Bt(){P?.fields&&Object.entries(P.fields).forEach(([ae,ue])=>{let dt=vue.effectScope();Rt[ae]=dt.run(()=>{let pt=vue.ref();return vue.watchEffect(()=>{pt.value=ue(vue.reactive({$dirty:y,$externalErrors:c?.value??[],$value:e,$silentValue:K,$rules:I,$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:B,$tooltips:ut,$name:ct,$inactive:Me,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return vue.watch(ve,ae=>{ae||(G.value=false);}),{$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$debounce:D,$lazy:se,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:B,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:j,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Me}}),k(),E=vue.watch(a.$dirty,y=>{s.setDirtyEntry(n,y),Object.values(I.value).forEach(G=>{G.$fieldDirty=y;});}),S=vue.watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(y=>{y.$fieldError=a.$error.value,y.$fieldInvalid=a.$invalid.value,y.$fieldPending=a.$pending.value,y.$fieldValid=a.$valid.value;});}),b=vue.watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=false);}),i=vue.watch(a.$haveAnyAsyncRule,u);}function k(){v=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&l(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:M?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=vue.ref({}),L=vue.ref({});l();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,s.setDirtyEntry(n,false),x.value=ne(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([y,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$validate());}function de(y=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():y&&V();}async function pe(){try{let y=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:y};return m?{result:!$?.value?.length,data:y}:Z(I.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(I.value).map(([D,se])=>se.$validate()))).every(D=>D.status==="fulfilled"?D.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Y(x),ie();}function d(y=true){return a.$dirty.value?e.value:y?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:Q,$clearExternalErrorsOnChange:g,$haveAnyAsyncRule:F,$debounce:H,$lazy:X,triggerPunishment:z,...oe}=a;return vue.reactive({...oe,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:o,stateValue:s,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:M,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?a=`${t}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=vue.toRef($?.value??[],r),v=vue.computed(()=>m?.value?.[r]),b=Te({state:s,rulesDef:vue.toRef(()=>c),customMessages:R,path:a,storage:o,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:M,fieldName:x,schemaMode:P});if(b){let E=s.value?.$id;b.$id=E??String(O),o.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:M}){let x=vue.effectScope(),P,O=vue.effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=vue.ref(),b=vue.ref(e.value),E,i=vue.ref({}),S=o.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=he(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,vue.toRef(()=>d),f);p&&w.push(p);let A=vue.toRef(m.value??[],f),Q=vue.toRef(R?.value??{},"$each"),g=vue.computed(()=>c?.value?.$each),F=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>d),index:f,options:s,storage:o,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:M,schemaMode:$});return F||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:vue.toRef(R?.value??{},"$self"),schemaErrors:vue.computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:M,schemaMode:$});}function l(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Y(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=vue.toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=o.getArrayStatus(v.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:Q}=Ke(t.value.$each,T,p);A&&w.push(A);let g=vue.toRef(R?.value??{},"$each"),F=vue.computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:s,storage:o,externalErrors:g,schemaErrors:F,initialState:vue.toRef(m.value??[],p),shortcuts:h,fieldName:M,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{o.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function u(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():l();},{deep:_e?1:true,flush:"pre"});}function C(){u(),x=vue.effectScope(),P=x.run(()=>{let d=vue.computed({get:()=>e.value,set(D){E(),e.value=D,u();}}),f=vue.computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(D=>D.$dirty))),p=vue.computed(()=>i.value.$anyDirty||S.value.some(D=>D.$anyDirty)),T=vue.computed(()=>i.value.$invalid||S.value.some(D=>D.$invalid)),A=vue.computed(()=>(Z(i.value.$rules)?true:i.value.$valid)&&(!S.value.length||S.value.every(D=>D.$valid))),Q=vue.computed(()=>i.value.$error||S.value.some(D=>D.$error)),g=vue.computed(()=>!(T.value||F.value)),F=vue.computed(()=>i.value.$pending||S.value.some(D=>D.$pending)),H=vue.computed(()=>!!S.value.length&&S.value.every(D=>D.$edited)),X=vue.computed(()=>i.value.$anyEdited||S.value.some(D=>D.$anyEdited)),z=vue.computed(()=>({$self:i.value.$errors,$each:S.value.map(D=>D.$errors)})),oe=vue.computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(D=>D.$silentErrors)})),y=vue.computed(()=>M);function G(){h?.collections&&Object.entries(h?.collections).forEach(([D,se])=>{let le=vue.effectScope();B[D]=le.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=se(vue.reactive({$dirty:f,$error:Q,$silentValue:d,$pending:F,$invalid:T,$valid:A,$errors:z,$ready:g,$silentErrors:oe,$anyDirty:p,$name:y,$each:S,$self:i,$value:e,$edited:H,$anyEdited:X}));}),ge}),w.push(le);});}let B={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:F,$errors:z,$silentErrors:oe,$ready:g,$name:y,$shortcuts:B,$silentValue:d,$edited:H,$anyEdited:X}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=vue.effectScope(),O.stop(),O=vue.effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function L(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>Z(p))&&(f=[]),f}function de(){_(),e.value=Y(m.value),J();}let{$shortcuts:pe,...me}=P;return vue.reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:o,schemaErrors:s,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let M=vue.effectScope(),x,P=[],O=null,a=null,w=null,v=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([g,F])=>!!F).map(([g,F])=>{if(F){let H=vue.toRef(t.value??{},g),X=vue.toRef(()=>F),z=vue.toRef(o?.value??{},g),oe=vue.computed(()=>s?.value?.[g]),y=vue.toRef($?.value??{},g);return [g,Te({state:H,rulesDef:X,path:r?`${r}.${g}`:g,externalErrors:z,schemaErrors:oe,initialState:y,fieldName:g,...h})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(o)??{}).filter(([g,F])=>!(g in e.value)&&!!F).map(([g])=>{let F=vue.toRef(t.value??{},g),H=vue.toRef(o?.value??{},g),X=vue.computed(()=>s?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:F,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(vue.unref(s)??{}).map(([g])=>{let F=vue.toRef(t.value??{},g),H=vue.toRef(o?.value??{},g),X=vue.computed(()=>s?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:F,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),Q=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(T??{}))&&!(g in(A??{}))).map(([g])=>{let F=vue.toRef(t.value??{},g),H=vue.toRef(o?.value??{},g),X=vue.computed(()=>s?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:F,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&l();}let i=h.storage.getFieldsEntry(r);E();function S(){o&&(w=vue.watch(o,()=>{u(),E();},{deep:true}));}function V(){v=vue.watch(t,()=>{u(),E(),k(true,true);},{flush:"sync"});}function l(){n&&(O?.(),O=vue.watch(n,()=>{u(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=vue.watch(R,()=>{u(),E();},{deep:true,flush:"post"})),V(),x=M.run(()=>{let d=vue.computed({get:()=>t.value,set(U){u(),t.value=U,E();}}),f=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$dirty)),p=vue.computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyDirty)),T=vue.computed(()=>Object.entries(i.value).some(([U,j])=>j?.$invalid)),A=vue.computed(()=>{let U=Object.entries(i.value).filter(([j,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([j,K])=>K?.$valid):false}),Q=vue.computed(()=>p.value&&!z.value&&T.value),g=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),F=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!g.value),H=vue.computed(()=>F.value?p.value&&!(T.value||z.value):!(T.value||z.value)),X=vue.ref(false),z=vue.computed(()=>X.value||Object.entries(i.value).some(([U,j])=>j?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$errors]))),y=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$silentErrors]))),G=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$edited)),B=vue.computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyEdited)),D=vue.computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,j])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=j(vue.reactive({$dirty:f,$value:t,$silentValue:d,$error:Q,$pending:z,$invalid:T,$valid:A,$ready:H,$anyDirty:p,$name:D,$silentErrors:y,$errors:oe,$fields:i,$edited:G,$anyEdited:B}));}),ye}),P.push(K);});}let le=vue.computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,j])=>j.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(j,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(j,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:z,$errors:oe,$silentErrors:y,$ready:H,$name:D,$shortcuts:ge,$groups:le,$silentValue:d,$edited:G,$anyEdited:B,$localPending:X}});}function u(){O?.(),w?.(),v?.(),a?.(),P=[],x={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),$.value={...Y(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){u(),t.value=Y({...$.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ne(p)?!(p&&typeof p=="object"&&"_null"in p)&&!Z(p):Array.isArray(p)?p.length:true)}function L(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),x.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{x.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=x;return vue.reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:u,$watch:l,$clearExternalErrors:C,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Fe(t.state))return ke({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let R=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),vue.watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:o,...s}=t;return ke({rulesDef:e,...s,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:o,shortcuts:s,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=vue.ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:o?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:$}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function o(s,R,c){let $=vue.isRef(R)?R:vue.computed(typeof R=="function"?R:()=>R),m={...n,...c},h=vue.isRef(s)?s:vue.ref(s),M=vue.ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:M,customRules:e,shortcuts:r}).regle}}return o}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),o=rt();return {useRegle:n,inferRules:o}}function je(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(l=>l.$value):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$value])),set:l=>{r||typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$value=C);}}),o=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentValue])),set:l=>{typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$silentValue=C);}}),s=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$dirty)}),R=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$anyDirty)),c=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$invalid)),$=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$valid)}),m=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$error)),h=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$ready)}),M=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$pending)),x=vue.computed(()=>r?Object.entries(e).map(([l,u])=>u.$errors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$errors]))),P=vue.computed(()=>r?Object.entries(e).map(([l,u])=>u.$silentErrors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentErrors]))),O=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$anyEdited)),w=vue.computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(l=>{l.$reset();});}function b(){Object.values(e).forEach(l=>{l.$touch();});}function E(){Object.values(e).forEach(l=>{l.$resetAll();});}function i(l=true){return Object.values(e).map(u=>u.$extractDirtyFields(l))}function S(){Object.values(e).forEach(l=>{l.$clearExternalErrors();});}async function V(){try{let l=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:l}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:o},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:s,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:M,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:v,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=vue.computed(()=>vue.toValue(r));R();let o=vue.ref(c(e.value)),s=vue.reactive({r$:o});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,R),vue.watch(e,$=>{o.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return je(m,true)}else return je($["~~global"]??{},true)}return {r$:s.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(o,s,R)=>{let{namespace:c,...$}=R??{},m=vue.computed(()=>vue.toValue(c)),h=vue.ref(`${Object.keys(e.value).length+1}-${he()}`),M=vue.computed(()=>`instance-${h.value}`),{r$:x}=r(o,s,$);O(),St(P),vue.watch(m,(a,w)=>{P(w),O();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][M.value]:e.value["~~global"][M.value]&&delete e.value["~~global"][M.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][M.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][M.value]=x);}return {r$:x,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:o}=Nt(r);return {useScopedRegle:n,useCollectScope:o}}
|
|
2
|
-
exports.InternalRuleType=Le;exports.createRule=ze;exports.createScopedUseRegle=at;exports.defineRegleConfig=Vt;exports.inferRules=nt;exports.mergeRegles=
|
|
1
|
+
'use strict';var vue=require('vue');function Z(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Lt(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 Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function gt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function $t(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...$){return e.validator(c,...ee($.length?$:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let $=e.validator(c,...ee(t)),m;return $ instanceof Promise?$.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if($t(e.validator)>1){let l=function(...u){return He(e,...u)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),u=vue.shallowRef(new Map);function R(v){let b=t.value.get(v);if(b)return b;{let E=vue.ref({});return t.value.set(v,E),E}}function c(v){let b=r.value.get(v);if(b)return b;{let E=vue.ref([]);return r.value.set(v,E),E}}function $(v,b,E){u.value.set(`${v}-${b}`,E);}function m(v,b){return u.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&u.value.delete(`${v}-${b}`);}function F(v,b){n.value.set(v,b);}function x(v){return n.value.get(v)??false}function P(v,b){e.value.set(v,b);}function O(v,b){let E=e.value.get(v);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a(v,b){let E=Object.keys(b),i=Object.keys(v);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=v[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=ee(s._params),J=ee(o._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=l.value.get(v);if(b)return b;{let E=vue.ref(false),i=vue.ref(true),S=vue.ref({}),V=vue.ref(false);return l.value.set(v,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ne(e.value)}function Ke(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(vue.version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function ht(e){let t=false,r,n=vue.effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ne(t.value)&&!Z(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ne(e.value)}function we(e){return ne(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ne(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let $=vue.effectScope(),m={},h,F=vue.ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){$=vue.effectScope(),m=$.run(()=>{let o=vue.ref(false),s=vue.ref(false),C=vue.ref(true),_=vue.ref(false),k=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$valid:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:x.value},$params:d.value,...O.value})),I=vue.computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let Q=`_${p}_patched`;A&&!t.value[Q]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=vue.computed(()=>{let p=L("message");return Z(p)&&(p="This field is not valid"),p}),de=vue.computed(()=>L("tooltip")),pe=vue.computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>Pe(t)?t.value.validator:t.value),d=vue.computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),f=vue.computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=vue.watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){P.value=true,m.$fieldDirty.value&&(x.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;v();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{x.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},x.value=false,a.value=false,w();}function V(){h(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:x,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:F,initialState:x,shortcuts:P}){let O=vue.effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function o(){let y=t.value,G=u.checkRuleDeclEntry(n,y);L.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,D])=>{if(D){let se=vue.toRef(()=>D);return [B,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:B,state:e,path:n,storage:u,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,y);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),v?.(),b?.(),O.stop(),O=vue.effectScope(),w.forEach(y=>y.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$watch();}),a=O.run(()=>{let y=vue.ref(false),G=vue.ref(false),B=vue.computed(()=>y.value),D=vue.computed(()=>L.value.$debounce),se=vue.computed(()=>L.value.$lazy!=null?L.value.$lazy:vue.unref(R.lazy)!=null?vue.unref(R.lazy):false),le=vue.computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:vue.unref(R.rewardEarly)!=null?vue.unref(R.rewardEarly):false),ge=vue.computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:vue.unref(R.clearExternalErrorsOnChange)!=null?vue.unref(R.clearExternalErrorsOnChange):true),U=vue.computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:vue.unref(R.autoDirty)!=null?vue.unref(R.autoDirty):!le.value),M=vue.computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$validating)),K=vue.computed({get:()=>e.value,set(ae){v(),e.value=ae,k();}}),ye=vue.computed(()=>ve.value&&!Oe.value&&y.value),lt=vue.computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value}})),ot=vue.computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value},silent:true})),We=vue.computed(()=>y.value?x.value instanceof Date&&e.value instanceof Date?Be(x.value).getDate()!==Be(e.value).getDate():x.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(x.value)?e.value.length!==x.value.length:x.value!==e.value:false),st=vue.computed(()=>We.value),ut=vue.computed(()=>Ct({field:{$rules:I.value}})),it=vue.computed(()=>U.value?B.value&&!(ve.value||Oe.value):!(ve.value||Oe.value)),Oe=vue.computed(()=>G.value||!le.value?Object.entries(I.value).some(([ae,ue])=>ue.$pending):false),ve=vue.computed(()=>c?.value?.length||$?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=vue.computed(()=>l),Fe=vue.computed(()=>!!(Z(I.value)&&!m)),ft=vue.computed(()=>c?.value?.length||Fe.value?false:y.value&&!Z(e.value)&&!M.value?m?!$?.value?.length:Object.values(I.value).every(ae=>ae.$valid&&ae.$active):false),Wt=vue.computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$haveAsync));function Bt(){P?.fields&&Object.entries(P.fields).forEach(([ae,ue])=>{let dt=vue.effectScope();Rt[ae]=dt.run(()=>{let pt=vue.ref();return vue.watchEffect(()=>{pt.value=ue(vue.reactive({$dirty:y,$externalErrors:c?.value??[],$value:e,$silentValue:K,$rules:I,$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:B,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return vue.watch(ve,ae=>{ae||(G.value=false);}),{$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$debounce:D,$lazy:se,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:B,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Fe}}),k(),E=vue.watch(a.$dirty,y=>{u.setDirtyEntry(n,y),Object.values(I.value).forEach(G=>{G.$fieldDirty=y;});}),S=vue.watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(y=>{y.$fieldError=a.$error.value,y.$fieldInvalid=a.$invalid.value,y.$fieldPending=a.$pending.value,y.$fieldValid=a.$valid.value;});}),b=vue.watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=false);}),i=vue.watch(a.$haveAnyAsyncRule,s);}function k(){v=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=vue.ref({}),L=vue.ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),x.value=ne(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([y,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$validate());}function de(y=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():y&&V();}async function pe(){try{let y=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:y};return m?{result:!$?.value?.length,data:y}:Z(I.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(I.value).map(([D,se])=>se.$validate()))).every(D=>D.status==="fulfilled"?D.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Y(x),ie();}function d(y=true){return a.$dirty.value?e.value:y?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:Q,$clearExternalErrorsOnChange:g,$haveAnyAsyncRule:j,$debounce:H,$lazy:X,triggerPunishment:z,...oe}=a;return vue.reactive({...oe,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:F,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=vue.toRef($?.value??[],r),v=vue.computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:vue.toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:F,fieldName:x,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:F}){let x=vue.effectScope(),P,O=vue.effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=vue.ref(),b=vue.ref(e.value),E,i=vue.ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=he(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,vue.toRef(()=>d),f);p&&w.push(p);let A=vue.toRef(m.value??[],f),Q=vue.toRef(R?.value??{},"$each"),g=vue.computed(()=>c?.value?.$each),j=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>d),index:f,options:u,storage:l,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:F,schemaMode:$});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:vue.toRef(R?.value??{},"$self"),schemaErrors:vue.computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:$});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Y(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=vue.toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus(v.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:Q}=Ke(t.value.$each,T,p);A&&w.push(A);let g=vue.toRef(R?.value??{},"$each"),j=vue.computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:u,storage:l,externalErrors:g,schemaErrors:j,initialState:vue.toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),x=vue.effectScope(),P=x.run(()=>{let d=vue.computed({get:()=>e.value,set(D){E(),e.value=D,s();}}),f=vue.computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(D=>D.$dirty))),p=vue.computed(()=>i.value.$anyDirty||S.value.some(D=>D.$anyDirty)),T=vue.computed(()=>i.value.$invalid||S.value.some(D=>D.$invalid)),A=vue.computed(()=>(Z(i.value.$rules)?true:i.value.$valid)&&(!S.value.length||S.value.every(D=>D.$valid))),Q=vue.computed(()=>i.value.$error||S.value.some(D=>D.$error)),g=vue.computed(()=>!(T.value||j.value)),j=vue.computed(()=>i.value.$pending||S.value.some(D=>D.$pending)),H=vue.computed(()=>!!S.value.length&&S.value.every(D=>D.$edited)),X=vue.computed(()=>i.value.$anyEdited||S.value.some(D=>D.$anyEdited)),z=vue.computed(()=>({$self:i.value.$errors,$each:S.value.map(D=>D.$errors)})),oe=vue.computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(D=>D.$silentErrors)})),y=vue.computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([D,se])=>{let le=vue.effectScope();B[D]=le.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=se(vue.reactive({$dirty:f,$error:Q,$silentValue:d,$pending:j,$invalid:T,$valid:A,$errors:z,$ready:g,$silentErrors:oe,$anyDirty:p,$name:y,$each:S,$self:i,$value:e,$edited:H,$anyEdited:X}));}),ge}),w.push(le);});}let B={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:j,$errors:z,$silentErrors:oe,$ready:g,$name:y,$shortcuts:B,$silentValue:d,$edited:H,$anyEdited:X}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=vue.effectScope(),O.stop(),O=vue.effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function L(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>Z(p))&&(f=[]),f}function de(){_(),e.value=Y(m.value),J();}let{$shortcuts:pe,...me}=P;return vue.reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let F=vue.effectScope(),x,P=[],O=null,a=null,w=null,v=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([g,j])=>!!j).map(([g,j])=>{if(j){let H=vue.toRef(t.value??{},g),X=vue.toRef(()=>j),z=vue.toRef(l?.value??{},g),oe=vue.computed(()=>u?.value?.[g]),y=vue.toRef($?.value??{},g);return [g,Te({state:H,rulesDef:X,path:r?`${r}.${g}`:g,externalErrors:z,schemaErrors:oe,initialState:y,fieldName:g,...h})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([g,j])=>!(g in e.value)&&!!j).map(([g])=>{let j=vue.toRef(t.value??{},g),H=vue.toRef(l?.value??{},g),X=vue.computed(()=>u?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(vue.unref(u)??{}).map(([g])=>{let j=vue.toRef(t.value??{},g),H=vue.toRef(l?.value??{},g),X=vue.computed(()=>u?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),Q=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(T??{}))&&!(g in(A??{}))).map(([g])=>{let j=vue.toRef(t.value??{},g),H=vue.toRef(l?.value??{},g),X=vue.computed(()=>u?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=vue.watch(l,()=>{s(),E();},{deep:true}));}function V(){v=vue.watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=vue.watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),x=F.run(()=>{let d=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=vue.computed(()=>{let U=Object.entries(i.value).filter(([M,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([M,K])=>K?.$valid):false}),Q=vue.computed(()=>p.value&&!z.value&&T.value),g=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),j=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!g.value),H=vue.computed(()=>j.value?p.value&&!(T.value||z.value):!(T.value||z.value)),X=vue.ref(false),z=vue.computed(()=>X.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),y=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),B=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),D=vue.computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=M(vue.reactive({$dirty:f,$value:t,$silentValue:d,$error:Q,$pending:z,$invalid:T,$valid:A,$ready:H,$anyDirty:p,$name:D,$silentErrors:y,$errors:oe,$fields:i,$edited:G,$anyEdited:B}));}),ye}),P.push(K);});}let le=vue.computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(M,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(M,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:z,$errors:oe,$silentErrors:y,$ready:H,$name:D,$shortcuts:ge,$groups:le,$silentValue:d,$edited:G,$anyEdited:B,$localPending:X}});}function s(){O?.(),w?.(),v?.(),a?.(),P=[],x={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),$.value={...Y(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Y({...$.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ne(p)?!(p&&typeof p=="object"&&"_null"in p)&&!Z(p):Array.isArray(p)?p.length:true)}function L(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),x.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{x.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=x;return vue.reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let R=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),vue.watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=vue.ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:$}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let $=vue.isRef(R)?R:vue.computed(typeof R=="function"?R:()=>R),m={...n,...c},h=vue.isRef(u)?u:vue.ref(u),F=vue.ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$valid)}),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),x=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=vue.computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:v,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=vue.computed(()=>vue.toValue(r));R();let l=vue.ref(c(e.value)),u=vue.reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,R),vue.watch(e,$=>{l.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return Me(m,true)}else return Me($["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...$}=R??{},m=vue.computed(()=>vue.toValue(c)),h=vue.ref(`${Object.keys(e.value).length+1}-${he()}`),F=vue.computed(()=>`instance-${h.value}`),{r$:x}=r(l,u,$);O(),St(P),vue.watch(m,(a,w)=>{P(w),O();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=x);}return {r$:x,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
|
|
2
|
+
exports.InternalRuleType=Le;exports.createRule=ze;exports.createScopedUseRegle=at;exports.defineRegleConfig=Vt;exports.inferRules=nt;exports.mergeRegles=Me;exports.unwrapRuleParameters=ee;exports.useRegle=Ue;exports.useRootStorage=Ie;
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,watch,getCurrentInstance,onMounted,isRef,toRef,unref,watchEffect}from'vue';function Z(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Lt(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 Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function gt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let o=n[t]||[];return r.concat(o)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function $t(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,o=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...$){return e.validator(c,...ee($.length?$:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let $=e.validator(c,...ee(t)),m;return $ instanceof Promise?$.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:o,_params:vt(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if($t(e.validator)>1){let o=function(...s){return He(e,...s)};return o.validator=r.validator,o.message=r.message,o.active=r.active,o.tooltip=r.tooltip,o.type=r.type,o.exec=r.exec,o._validator=r.validator,o._message=r.message,o._active=r.active,o._tooltip=r.tooltip,o._type=e.type,o._message_pacthed=false,o._tooltip_pacthed=false,o._async=n,o}else return r}throw new Error("Validator must be a function")}function qe(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),o=shallowRef(new Map),s=shallowRef(new Map);function R(v){let b=t.value.get(v);if(b)return b;{let E=ref({});return t.value.set(v,E),E}}function c(v){let b=r.value.get(v);if(b)return b;{let E=ref([]);return r.value.set(v,E),E}}function $(v,b,E){s.value.set(`${v}-${b}`,E);}function m(v,b){return s.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&s.value.delete(`${v}-${b}`);}function M(v,b){n.value.set(v,b);}function x(v){return n.value.get(v)??false}function P(v,b){e.value.set(v,b);}function O(v,b){let E=e.value.get(v);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a(v,b){let E=Object.keys(b),i=Object.keys(v);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let l=v[V],u=b[V];return !u||!l||typeof l=="function"||typeof u=="function"||typeof l=="number"||typeof l=="boolean"?false:l._params?l._params?.every((C,_)=>{if(typeof u=="number"||typeof u=="boolean")return true;{let k=ee(u._params),J=ee(l._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=o.value.get(v);if(b)return b;{let E=ref(false),i=ref(true),S=ref({}),V=ref(false);return o.value.set(v,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),o.value.clear(),s.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:M,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:s}}function Fe(e){return ne(e.value)}function Ke(e,t,r){let n=effectScope(),o;return e instanceof Function?o=n.run(()=>e(t,r??0)):o=e,{scope:n,unwrapped:o}}function Ve(e,t,r){let n,o=(...s)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...s])).then(R);},t);});return o.cancel=()=>{clearTimeout(n),n=undefined;},o}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let o=0;o<Math.min(r.length,n.length);o++){let s=Number(r[o]),R=Number(n[o]);if(s>R)return 1;if(R>s)return -1;if(!isNaN(s)&&isNaN(R))return 1;if(isNaN(s)&&!isNaN(R))return -1}return 0}var _e=Zt(version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return getCurrentScope()?(onScopeDispose(e),true):false}function ht(e){let t=false,r,n=effectScope(true);return (...o)=>(t||(r=n.run(()=>e(...o)),t=true),r)}function bt(e,t){return Fe(e)||ne(t.value)&&!Z(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ne(e.value)}function we(e){return ne(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ne(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function It({customMessages:e,rule:t,ruleKey:r,state:n,path:o,storage:s,$debounce:R,modifiers:c}){let $=effectScope(),m={},h,M=ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=s.trySetRuleStatusRef(`${o}.${r}`);function w(){$=effectScope(),m=$.run(()=>{let l=ref(false),u=ref(false),C=ref(true),_=ref(false),k=ref(false),J=computed(()=>({$value:n.value,$error:u.value,$dirty:l.value,$pending:_.value,$valid:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:x.value},$params:d.value,...O.value})),I=computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let Q=`_${p}_patched`;A&&!t.value[Q]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=computed(()=>{let p=L("message");return Z(p)&&(p="This field is not valid"),p}),de=computed(()=>L("tooltip")),pe=computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=computed(()=>Pe(t)?t.value.validator:t.value),d=computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),f=computed(()=>`${o}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:u,$fieldDirty:l,$fieldPending:_,$fieldInvalid:C}}),h=watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){P.value=true,m.$fieldDirty.value&&(x.value=true);}async function b(){let l=false;try{let u=m.$validator.value,C=u(n.value,...m.$params.value),_=n.value;v();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")l=k;else {let{$valid:J,...I}=k;l=J,O.value=I;}}catch{l=false;}finally{x.value=false;}return l}let E=Ve(b,R??200);async function i(){try{a.value=!0;let l=!1;if(we(t.value)&&t.value._async)l=await E();else {let u=m.$validator.value,C=u(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")l=C;else {let{$valid:_,...k}=C;l=_,O.value=k;}}return P.value=l,l}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},x.value=false,a.value=false,w();}function V(){h(),$.stop(),$=effectScope();}return reactive({...m,$pending:x,$valid:P,$metadata:O,$haveAsync:M,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:o,storage:s,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:M,initialState:x,shortcuts:P}){let O=effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function l(){let y=t.value,G=s.checkRuleDeclEntry(n,y);L.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,D])=>{if(D){let se=toRef(()=>D);return [B,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:B,state:e,path:n,storage:s,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),u(),G?.valid!=null&&(a.$dirty.value=s.getDirtyState(n),a.$dirty.value&&V()),s.addRuleDeclEntry(n,y);}function u(){V=a.$debounce.value?Ve(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&s.setDirtyEntry(n,a.$dirty.value),v?.(),b?.(),O.stop(),O=effectScope(),w.forEach(y=>y.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$watch();}),a=O.run(()=>{let y=ref(false),G=ref(false),B=computed(()=>y.value),D=computed(()=>L.value.$debounce),se=computed(()=>L.value.$lazy!=null?L.value.$lazy:unref(R.lazy)!=null?unref(R.lazy):false),le=computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:unref(R.rewardEarly)!=null?unref(R.rewardEarly):false),ge=computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:unref(R.clearExternalErrorsOnChange)!=null?unref(R.clearExternalErrorsOnChange):true),U=computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:unref(R.autoDirty)!=null?unref(R.autoDirty):!le.value),j=computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$validating)),K=computed({get:()=>e.value,set(ae){v(),e.value=ae,k();}}),ye=computed(()=>ve.value&&!Oe.value&&y.value),lt=computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value}})),ot=computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value},silent:true})),We=computed(()=>y.value?x.value instanceof Date&&e.value instanceof Date?Be(x.value).getDate()!==Be(e.value).getDate():x.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(x.value)?e.value.length!==x.value.length:x.value!==e.value:false),st=computed(()=>We.value),ut=computed(()=>Ct({field:{$rules:I.value}})),it=computed(()=>U.value?B.value&&!(ve.value||Oe.value):!(ve.value||Oe.value)),Oe=computed(()=>G.value||!le.value?Object.entries(I.value).some(([ae,ue])=>ue.$pending):false),ve=computed(()=>c?.value?.length||$?.value?.length?true:Me.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=computed(()=>o),Me=computed(()=>!!(Z(I.value)&&!m)),ft=computed(()=>c?.value?.length||Me.value?false:y.value&&!Z(e.value)&&!j.value?m?!$?.value?.length:Object.values(I.value).every(ae=>ae.$valid&&ae.$active):false),Wt=computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$haveAsync));function Bt(){P?.fields&&Object.entries(P.fields).forEach(([ae,ue])=>{let dt=effectScope();Rt[ae]=dt.run(()=>{let pt=ref();return watchEffect(()=>{pt.value=ue(reactive({$dirty:y,$externalErrors:c?.value??[],$value:e,$silentValue:K,$rules:I,$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:B,$tooltips:ut,$name:ct,$inactive:Me,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return watch(ve,ae=>{ae||(G.value=false);}),{$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$debounce:D,$lazy:se,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:B,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:j,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Me}}),k(),E=watch(a.$dirty,y=>{s.setDirtyEntry(n,y),Object.values(I.value).forEach(G=>{G.$fieldDirty=y;});}),S=watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(y=>{y.$fieldError=a.$error.value,y.$fieldInvalid=a.$invalid.value,y.$fieldPending=a.$pending.value,y.$fieldValid=a.$valid.value;});}),b=watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=false);}),i=watch(a.$haveAnyAsyncRule,u);}function k(){v=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&l(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:M?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=ref({}),L=ref({});l();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,s.setDirtyEntry(n,false),x.value=ne(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([y,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$validate());}function de(y=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():y&&V();}async function pe(){try{let y=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:y};return m?{result:!$?.value?.length,data:y}:Z(I.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(I.value).map(([D,se])=>se.$validate()))).every(D=>D.status==="fulfilled"?D.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Y(x),ie();}function d(y=true){return a.$dirty.value?e.value:y?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:Q,$clearExternalErrorsOnChange:g,$haveAnyAsyncRule:F,$debounce:H,$lazy:X,triggerPunishment:z,...oe}=a;return reactive({...oe,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:o,stateValue:s,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:M,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?a=`${t}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=toRef($?.value??[],r),v=computed(()=>m?.value?.[r]),b=Te({state:s,rulesDef:toRef(()=>c),customMessages:R,path:a,storage:o,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:M,fieldName:x,schemaMode:P});if(b){let E=s.value?.$id;b.$id=E??String(O),o.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:M}){let x=effectScope(),P,O=effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),b=ref(e.value),E,i=ref({}),S=o.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=he(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,toRef(()=>d),f);p&&w.push(p);let A=toRef(m.value??[],f),Q=toRef(R?.value??{},"$each"),g=computed(()=>c?.value?.$each),F=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>d),index:f,options:s,storage:o,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:M,schemaMode:$});return F||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:toRef(R?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:M,schemaMode:$});}function l(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Y(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=o.getArrayStatus(v.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:Q}=Ke(t.value.$each,T,p);A&&w.push(A);let g=toRef(R?.value??{},"$each"),F=computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:s,storage:o,externalErrors:g,schemaErrors:F,initialState:toRef(m.value??[],p),shortcuts:h,fieldName:M,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{o.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function u(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():l();},{deep:_e?1:true,flush:"pre"});}function C(){u(),x=effectScope(),P=x.run(()=>{let d=computed({get:()=>e.value,set(D){E(),e.value=D,u();}}),f=computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(D=>D.$dirty))),p=computed(()=>i.value.$anyDirty||S.value.some(D=>D.$anyDirty)),T=computed(()=>i.value.$invalid||S.value.some(D=>D.$invalid)),A=computed(()=>(Z(i.value.$rules)?true:i.value.$valid)&&(!S.value.length||S.value.every(D=>D.$valid))),Q=computed(()=>i.value.$error||S.value.some(D=>D.$error)),g=computed(()=>!(T.value||F.value)),F=computed(()=>i.value.$pending||S.value.some(D=>D.$pending)),H=computed(()=>!!S.value.length&&S.value.every(D=>D.$edited)),X=computed(()=>i.value.$anyEdited||S.value.some(D=>D.$anyEdited)),z=computed(()=>({$self:i.value.$errors,$each:S.value.map(D=>D.$errors)})),oe=computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(D=>D.$silentErrors)})),y=computed(()=>M);function G(){h?.collections&&Object.entries(h?.collections).forEach(([D,se])=>{let le=effectScope();B[D]=le.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=se(reactive({$dirty:f,$error:Q,$silentValue:d,$pending:F,$invalid:T,$valid:A,$errors:z,$ready:g,$silentErrors:oe,$anyDirty:p,$name:y,$each:S,$self:i,$value:e,$edited:H,$anyEdited:X}));}),ge}),w.push(le);});}let B={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:F,$errors:z,$silentErrors:oe,$ready:g,$name:y,$shortcuts:B,$silentValue:d,$edited:H,$anyEdited:X}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=effectScope(),O.stop(),O=effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function L(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>Z(p))&&(f=[]),f}function de(){_(),e.value=Y(m.value),J();}let{$shortcuts:pe,...me}=P;return reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:o,schemaErrors:s,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let M=effectScope(),x,P=[],O=null,a=null,w=null,v=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([g,F])=>!!F).map(([g,F])=>{if(F){let H=toRef(t.value??{},g),X=toRef(()=>F),z=toRef(o?.value??{},g),oe=computed(()=>s?.value?.[g]),y=toRef($?.value??{},g);return [g,Te({state:H,rulesDef:X,path:r?`${r}.${g}`:g,externalErrors:z,schemaErrors:oe,initialState:y,fieldName:g,...h})]}return []})),T=Object.fromEntries(Object.entries(unref(o)??{}).filter(([g,F])=>!(g in e.value)&&!!F).map(([g])=>{let F=toRef(t.value??{},g),H=toRef(o?.value??{},g),X=computed(()=>s?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:F,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(unref(s)??{}).map(([g])=>{let F=toRef(t.value??{},g),H=toRef(o?.value??{},g),X=computed(()=>s?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:F,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),Q=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(T??{}))&&!(g in(A??{}))).map(([g])=>{let F=toRef(t.value??{},g),H=toRef(o?.value??{},g),X=computed(()=>s?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:F,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&l();}let i=h.storage.getFieldsEntry(r);E();function S(){o&&(w=watch(o,()=>{u(),E();},{deep:true}));}function V(){v=watch(t,()=>{u(),E(),k(true,true);},{flush:"sync"});}function l(){n&&(O?.(),O=watch(n,()=>{u(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=watch(R,()=>{u(),E();},{deep:true,flush:"post"})),V(),x=M.run(()=>{let d=computed({get:()=>t.value,set(U){u(),t.value=U,E();}}),f=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$dirty)),p=computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyDirty)),T=computed(()=>Object.entries(i.value).some(([U,j])=>j?.$invalid)),A=computed(()=>{let U=Object.entries(i.value).filter(([j,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([j,K])=>K?.$valid):false}),Q=computed(()=>p.value&&!z.value&&T.value),g=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),F=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!g.value),H=computed(()=>F.value?p.value&&!(T.value||z.value):!(T.value||z.value)),X=ref(false),z=computed(()=>X.value||Object.entries(i.value).some(([U,j])=>j?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$errors]))),y=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$silentErrors]))),G=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$edited)),B=computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyEdited)),D=computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,j])=>{let K=effectScope();ge[U]=K.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=j(reactive({$dirty:f,$value:t,$silentValue:d,$error:Q,$pending:z,$invalid:T,$valid:A,$ready:H,$anyDirty:p,$name:D,$silentErrors:y,$errors:oe,$fields:i,$edited:G,$anyEdited:B}));}),ye}),P.push(K);});}let le=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,j])=>j.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(j,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(j,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:z,$errors:oe,$silentErrors:y,$ready:H,$name:D,$shortcuts:ge,$groups:le,$silentValue:d,$edited:G,$anyEdited:B,$localPending:X}});}function u(){O?.(),w?.(),v?.(),a?.(),P=[],x={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),$.value={...Y(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){u(),t.value=Y({...$.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ne(p)?!(p&&typeof p=="object"&&"_null"in p)&&!Z(p):Array.isArray(p)?p.length:true)}function L(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),x.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{x.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=x;return reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:u,$watch:l,$clearExternalErrors:C,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Fe(t.state))return ke({rulesDef:e,...t});{let n=effectScope().run(()=>{let R=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:o,...s}=t;return ke({rulesDef:e,...s,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:o,shortcuts:s,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:o?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:$}),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function o(s,R,c){let $=isRef(R)?R:computed(typeof R=="function"?R:()=>R),m={...n,...c},h=isRef(s)?s:ref(s),M=ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:M,customRules:e,shortcuts:r}).regle}}return o}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),o=rt();return {useRegle:n,inferRules:o}}function je(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(l=>l.$value):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$value])),set:l=>{r||typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$value=C);}}),o=computed({get:()=>Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentValue])),set:l=>{typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$silentValue=C);}}),s=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$dirty)}),R=computed(()=>Object.entries(e).some(([l,u])=>u?.$anyDirty)),c=computed(()=>Object.entries(e).some(([l,u])=>u?.$invalid)),$=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$valid)}),m=computed(()=>Object.entries(e).some(([l,u])=>u?.$error)),h=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$ready)}),M=computed(()=>Object.entries(e).some(([l,u])=>u?.$pending)),x=computed(()=>r?Object.entries(e).map(([l,u])=>u.$errors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$errors]))),P=computed(()=>r?Object.entries(e).map(([l,u])=>u.$silentErrors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentErrors]))),O=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$edited)}),a=computed(()=>Object.entries(e).some(([l,u])=>u?.$anyEdited)),w=computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(l=>{l.$reset();});}function b(){Object.values(e).forEach(l=>{l.$touch();});}function E(){Object.values(e).forEach(l=>{l.$resetAll();});}function i(l=true){return Object.values(e).map(u=>u.$extractDirtyFields(l))}function S(){Object.values(e).forEach(l=>{l.$clearExternalErrors();});}async function V(){try{let l=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:l}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:o},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:s,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:M,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:v,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=computed(()=>toValue(r));R();let o=ref(c(e.value)),s=reactive({r$:o});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,R),watch(e,$=>{o.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return je(m,true)}else return je($["~~global"]??{},true)}return {r$:s.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(o,s,R)=>{let{namespace:c,...$}=R??{},m=computed(()=>toValue(c)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),M=computed(()=>`instance-${h.value}`),{r$:x}=r(o,s,$);O(),St(P),watch(m,(a,w)=>{P(w),O();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][M.value]:e.value["~~global"][M.value]&&delete e.value["~~global"][M.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][M.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][M.value]=x);}return {r$:x,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:o}=Nt(r);return {useScopedRegle:n,useCollectScope:o}}
|
|
2
|
-
export{Le as InternalRuleType,ze as createRule,at as createScopedUseRegle,Vt as defineRegleConfig,nt as inferRules,
|
|
1
|
+
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,watch,getCurrentInstance,onMounted,isRef,toRef,unref,watchEffect}from'vue';function Z(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Lt(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 Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function gt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function $t(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...$){return e.validator(c,...ee($.length?$:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let $=e.validator(c,...ee(t)),m;return $ instanceof Promise?$.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if($t(e.validator)>1){let l=function(...u){return He(e,...u)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),u=shallowRef(new Map);function R(v){let b=t.value.get(v);if(b)return b;{let E=ref({});return t.value.set(v,E),E}}function c(v){let b=r.value.get(v);if(b)return b;{let E=ref([]);return r.value.set(v,E),E}}function $(v,b,E){u.value.set(`${v}-${b}`,E);}function m(v,b){return u.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&u.value.delete(`${v}-${b}`);}function F(v,b){n.value.set(v,b);}function x(v){return n.value.get(v)??false}function P(v,b){e.value.set(v,b);}function O(v,b){let E=e.value.get(v);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a(v,b){let E=Object.keys(b),i=Object.keys(v);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=v[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=ee(s._params),J=ee(o._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=l.value.get(v);if(b)return b;{let E=ref(false),i=ref(true),S=ref({}),V=ref(false);return l.value.set(v,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ne(e.value)}function Ke(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return getCurrentScope()?(onScopeDispose(e),true):false}function ht(e){let t=false,r,n=effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ne(t.value)&&!Z(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ne(e.value)}function we(e){return ne(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ne(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let $=effectScope(),m={},h,F=ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){$=effectScope(),m=$.run(()=>{let o=ref(false),s=ref(false),C=ref(true),_=ref(false),k=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$valid:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:x.value},$params:d.value,...O.value})),I=computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let Q=`_${p}_patched`;A&&!t.value[Q]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=computed(()=>{let p=L("message");return Z(p)&&(p="This field is not valid"),p}),de=computed(()=>L("tooltip")),pe=computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=computed(()=>Pe(t)?t.value.validator:t.value),d=computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),f=computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){P.value=true,m.$fieldDirty.value&&(x.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;v();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{x.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},x.value=false,a.value=false,w();}function V(){h(),$.stop(),$=effectScope();}return reactive({...m,$pending:x,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:F,initialState:x,shortcuts:P}){let O=effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function o(){let y=t.value,G=u.checkRuleDeclEntry(n,y);L.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,D])=>{if(D){let se=toRef(()=>D);return [B,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:B,state:e,path:n,storage:u,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,y);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),v?.(),b?.(),O.stop(),O=effectScope(),w.forEach(y=>y.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$watch();}),a=O.run(()=>{let y=ref(false),G=ref(false),B=computed(()=>y.value),D=computed(()=>L.value.$debounce),se=computed(()=>L.value.$lazy!=null?L.value.$lazy:unref(R.lazy)!=null?unref(R.lazy):false),le=computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:unref(R.rewardEarly)!=null?unref(R.rewardEarly):false),ge=computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:unref(R.clearExternalErrorsOnChange)!=null?unref(R.clearExternalErrorsOnChange):true),U=computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:unref(R.autoDirty)!=null?unref(R.autoDirty):!le.value),M=computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$validating)),K=computed({get:()=>e.value,set(ae){v(),e.value=ae,k();}}),ye=computed(()=>ve.value&&!Oe.value&&y.value),lt=computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value}})),ot=computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value},silent:true})),We=computed(()=>y.value?x.value instanceof Date&&e.value instanceof Date?Be(x.value).getDate()!==Be(e.value).getDate():x.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(x.value)?e.value.length!==x.value.length:x.value!==e.value:false),st=computed(()=>We.value),ut=computed(()=>Ct({field:{$rules:I.value}})),it=computed(()=>U.value?B.value&&!(ve.value||Oe.value):!(ve.value||Oe.value)),Oe=computed(()=>G.value||!le.value?Object.entries(I.value).some(([ae,ue])=>ue.$pending):false),ve=computed(()=>c?.value?.length||$?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=computed(()=>l),Fe=computed(()=>!!(Z(I.value)&&!m)),ft=computed(()=>c?.value?.length||Fe.value?false:y.value&&!Z(e.value)&&!M.value?m?!$?.value?.length:Object.values(I.value).every(ae=>ae.$valid&&ae.$active):false),Wt=computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$haveAsync));function Bt(){P?.fields&&Object.entries(P.fields).forEach(([ae,ue])=>{let dt=effectScope();Rt[ae]=dt.run(()=>{let pt=ref();return watchEffect(()=>{pt.value=ue(reactive({$dirty:y,$externalErrors:c?.value??[],$value:e,$silentValue:K,$rules:I,$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:B,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return watch(ve,ae=>{ae||(G.value=false);}),{$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$debounce:D,$lazy:se,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:B,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Fe}}),k(),E=watch(a.$dirty,y=>{u.setDirtyEntry(n,y),Object.values(I.value).forEach(G=>{G.$fieldDirty=y;});}),S=watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(y=>{y.$fieldError=a.$error.value,y.$fieldInvalid=a.$invalid.value,y.$fieldPending=a.$pending.value,y.$fieldValid=a.$valid.value;});}),b=watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=false);}),i=watch(a.$haveAnyAsyncRule,s);}function k(){v=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=ref({}),L=ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),x.value=ne(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([y,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$validate());}function de(y=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():y&&V();}async function pe(){try{let y=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:y};return m?{result:!$?.value?.length,data:y}:Z(I.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(I.value).map(([D,se])=>se.$validate()))).every(D=>D.status==="fulfilled"?D.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Y(x),ie();}function d(y=true){return a.$dirty.value?e.value:y?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:Q,$clearExternalErrorsOnChange:g,$haveAnyAsyncRule:j,$debounce:H,$lazy:X,triggerPunishment:z,...oe}=a;return reactive({...oe,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:F,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=toRef($?.value??[],r),v=computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:F,fieldName:x,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:F}){let x=effectScope(),P,O=effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),b=ref(e.value),E,i=ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=he(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,toRef(()=>d),f);p&&w.push(p);let A=toRef(m.value??[],f),Q=toRef(R?.value??{},"$each"),g=computed(()=>c?.value?.$each),j=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>d),index:f,options:u,storage:l,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:F,schemaMode:$});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:toRef(R?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:$});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Y(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus(v.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:Q}=Ke(t.value.$each,T,p);A&&w.push(A);let g=toRef(R?.value??{},"$each"),j=computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:u,storage:l,externalErrors:g,schemaErrors:j,initialState:toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),x=effectScope(),P=x.run(()=>{let d=computed({get:()=>e.value,set(D){E(),e.value=D,s();}}),f=computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(D=>D.$dirty))),p=computed(()=>i.value.$anyDirty||S.value.some(D=>D.$anyDirty)),T=computed(()=>i.value.$invalid||S.value.some(D=>D.$invalid)),A=computed(()=>(Z(i.value.$rules)?true:i.value.$valid)&&(!S.value.length||S.value.every(D=>D.$valid))),Q=computed(()=>i.value.$error||S.value.some(D=>D.$error)),g=computed(()=>!(T.value||j.value)),j=computed(()=>i.value.$pending||S.value.some(D=>D.$pending)),H=computed(()=>!!S.value.length&&S.value.every(D=>D.$edited)),X=computed(()=>i.value.$anyEdited||S.value.some(D=>D.$anyEdited)),z=computed(()=>({$self:i.value.$errors,$each:S.value.map(D=>D.$errors)})),oe=computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(D=>D.$silentErrors)})),y=computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([D,se])=>{let le=effectScope();B[D]=le.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=se(reactive({$dirty:f,$error:Q,$silentValue:d,$pending:j,$invalid:T,$valid:A,$errors:z,$ready:g,$silentErrors:oe,$anyDirty:p,$name:y,$each:S,$self:i,$value:e,$edited:H,$anyEdited:X}));}),ge}),w.push(le);});}let B={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:j,$errors:z,$silentErrors:oe,$ready:g,$name:y,$shortcuts:B,$silentValue:d,$edited:H,$anyEdited:X}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=effectScope(),O.stop(),O=effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function L(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>Z(p))&&(f=[]),f}function de(){_(),e.value=Y(m.value),J();}let{$shortcuts:pe,...me}=P;return reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let F=effectScope(),x,P=[],O=null,a=null,w=null,v=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([g,j])=>!!j).map(([g,j])=>{if(j){let H=toRef(t.value??{},g),X=toRef(()=>j),z=toRef(l?.value??{},g),oe=computed(()=>u?.value?.[g]),y=toRef($?.value??{},g);return [g,Te({state:H,rulesDef:X,path:r?`${r}.${g}`:g,externalErrors:z,schemaErrors:oe,initialState:y,fieldName:g,...h})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([g,j])=>!(g in e.value)&&!!j).map(([g])=>{let j=toRef(t.value??{},g),H=toRef(l?.value??{},g),X=computed(()=>u?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(unref(u)??{}).map(([g])=>{let j=toRef(t.value??{},g),H=toRef(l?.value??{},g),X=computed(()=>u?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),Q=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(T??{}))&&!(g in(A??{}))).map(([g])=>{let j=toRef(t.value??{},g),H=toRef(l?.value??{},g),X=computed(()=>u?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=watch(l,()=>{s(),E();},{deep:true}));}function V(){v=watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),x=F.run(()=>{let d=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=computed(()=>{let U=Object.entries(i.value).filter(([M,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([M,K])=>K?.$valid):false}),Q=computed(()=>p.value&&!z.value&&T.value),g=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!g.value),H=computed(()=>j.value?p.value&&!(T.value||z.value):!(T.value||z.value)),X=ref(false),z=computed(()=>X.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),y=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),B=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),D=computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let K=effectScope();ge[U]=K.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=M(reactive({$dirty:f,$value:t,$silentValue:d,$error:Q,$pending:z,$invalid:T,$valid:A,$ready:H,$anyDirty:p,$name:D,$silentErrors:y,$errors:oe,$fields:i,$edited:G,$anyEdited:B}));}),ye}),P.push(K);});}let le=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(M,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(M,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:z,$errors:oe,$silentErrors:y,$ready:H,$name:D,$shortcuts:ge,$groups:le,$silentValue:d,$edited:G,$anyEdited:B,$localPending:X}});}function s(){O?.(),w?.(),v?.(),a?.(),P=[],x={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),$.value={...Y(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Y({...$.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ne(p)?!(p&&typeof p=="object"&&"_null"in p)&&!Z(p):Array.isArray(p)?p.length:true)}function L(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),x.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{x.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=x;return reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=effectScope().run(()=>{let R=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:$}),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let $=isRef(R)?R:computed(typeof R=="function"?R:()=>R),m={...n,...c},h=isRef(u)?u:ref(u),F=ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$valid)}),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),x=computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:v,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=computed(()=>toValue(r));R();let l=ref(c(e.value)),u=reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,R),watch(e,$=>{l.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return Me(m,true)}else return Me($["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...$}=R??{},m=computed(()=>toValue(c)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),F=computed(()=>`instance-${h.value}`),{r$:x}=r(l,u,$);O(),St(P),watch(m,(a,w)=>{P(w),O();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=x);}return {r$:x,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
|
|
2
|
+
export{Le as InternalRuleType,ze as createRule,at as createScopedUseRegle,Vt as defineRegleConfig,nt as inferRules,Me as mergeRegles,ee as unwrapRuleParameters,Ue as useRegle,Ie as useRootStorage};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -85,6 +85,25 @@ function toDate(argument) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
// ../shared/utils/debounce.ts
|
|
89
|
+
function debounce(func, wait, immediate) {
|
|
90
|
+
let timeout;
|
|
91
|
+
const debouncedFn = (...args) => new Promise((resolve) => {
|
|
92
|
+
clearTimeout(timeout);
|
|
93
|
+
timeout = setTimeout(() => {
|
|
94
|
+
timeout = undefined;
|
|
95
|
+
{
|
|
96
|
+
Promise.resolve(func.apply(this, [...args])).then(resolve);
|
|
97
|
+
}
|
|
98
|
+
}, wait);
|
|
99
|
+
});
|
|
100
|
+
debouncedFn.cancel = () => {
|
|
101
|
+
clearTimeout(timeout);
|
|
102
|
+
timeout = undefined;
|
|
103
|
+
};
|
|
104
|
+
return debouncedFn;
|
|
105
|
+
}
|
|
106
|
+
|
|
88
107
|
// src/types/rules/rule.internal.types.ts
|
|
89
108
|
var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
|
|
90
109
|
InternalRuleType2["Inline"] = "__inline";
|
|
@@ -374,25 +393,6 @@ function unwrapGetter(getter, value, index) {
|
|
|
374
393
|
}
|
|
375
394
|
return { scope, unwrapped };
|
|
376
395
|
}
|
|
377
|
-
|
|
378
|
-
// src/utils/debounce.ts
|
|
379
|
-
function debounce(func, wait, immediate) {
|
|
380
|
-
let timeout;
|
|
381
|
-
const debouncedFn = (...args) => new Promise((resolve) => {
|
|
382
|
-
clearTimeout(timeout);
|
|
383
|
-
timeout = setTimeout(() => {
|
|
384
|
-
timeout = undefined;
|
|
385
|
-
{
|
|
386
|
-
Promise.resolve(func.apply(this, [...args])).then(resolve);
|
|
387
|
-
}
|
|
388
|
-
}, wait);
|
|
389
|
-
});
|
|
390
|
-
debouncedFn.cancel = () => {
|
|
391
|
-
clearTimeout(timeout);
|
|
392
|
-
timeout = undefined;
|
|
393
|
-
};
|
|
394
|
-
return debouncedFn;
|
|
395
|
-
}
|
|
396
396
|
function versionCompare(current, other) {
|
|
397
397
|
const cp = String(current).split(".");
|
|
398
398
|
const op = String(other).split(".");
|
|
@@ -628,6 +628,10 @@ function createReactiveRuleStatus({
|
|
|
628
628
|
let ruleResult = false;
|
|
629
629
|
try {
|
|
630
630
|
const validator = scopeState.$validator.value;
|
|
631
|
+
if (typeof validator !== "function") {
|
|
632
|
+
console.error(`${path}: Incorrect rule format, it needs to be either a function or created with "createRule".`);
|
|
633
|
+
return false;
|
|
634
|
+
}
|
|
631
635
|
const resultOrPromise = validator(state.value, ...scopeState.$params.value);
|
|
632
636
|
let cachedValue = state.value;
|
|
633
637
|
updatePendingState();
|
|
@@ -776,7 +780,7 @@ function createReactiveFieldStatus({
|
|
|
776
780
|
define$commit();
|
|
777
781
|
if (storeResult?.valid != null) {
|
|
778
782
|
scopeState.$dirty.value = storage.getDirtyState(path);
|
|
779
|
-
if (scopeState.$dirty.value) {
|
|
783
|
+
if (scopeState.$dirty.value && scopeState.$autoDirty.value || scopeState.$rewardEarly.value && scopeState.$error.value) {
|
|
780
784
|
$commit();
|
|
781
785
|
}
|
|
782
786
|
}
|