@regle/core 1.0.7 → 1.0.8
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 +15 -11
- package/dist/regle-core.d.cts +31 -15
- package/dist/regle-core.d.ts +31 -15
- package/dist/regle-core.min.cjs +2 -2
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +15 -11
- package/package.json +2 -2
package/dist/regle-core.cjs
CHANGED
|
@@ -107,11 +107,10 @@ function debounce(func, wait, immediate) {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
// src/types/rules/rule.internal.types.ts
|
|
110
|
-
var InternalRuleType =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
})(InternalRuleType || {});
|
|
110
|
+
var InternalRuleType = {
|
|
111
|
+
Inline: "__inline",
|
|
112
|
+
Async: "__async"
|
|
113
|
+
};
|
|
115
114
|
function mergeBooleanGroupProperties(entries, property) {
|
|
116
115
|
return entries.some((entry) => {
|
|
117
116
|
return entry[property];
|
|
@@ -155,7 +154,7 @@ function getFunctionParametersLength(func) {
|
|
|
155
154
|
// src/core/createRule/defineRuleProcessors.ts
|
|
156
155
|
function defineRuleProcessors(definition, ...params) {
|
|
157
156
|
const { validator, type } = definition;
|
|
158
|
-
const isAsync = type ===
|
|
157
|
+
const isAsync = type === InternalRuleType.Async || validator.constructor.name === "AsyncFunction";
|
|
159
158
|
const defaultProcessors = {
|
|
160
159
|
validator(value, ...args) {
|
|
161
160
|
return definition.validator(value, ...unwrapRuleParameters(args.length ? args : params));
|
|
@@ -395,18 +394,23 @@ function unwrapGetter(getter, value, index) {
|
|
|
395
394
|
}
|
|
396
395
|
return { scope, unwrapped };
|
|
397
396
|
}
|
|
397
|
+
var VersionIs = {
|
|
398
|
+
LessThan: -1,
|
|
399
|
+
EqualTo: 0,
|
|
400
|
+
GreaterThan: 1
|
|
401
|
+
};
|
|
398
402
|
function versionCompare(current, other) {
|
|
399
403
|
const cp = String(current).split(".");
|
|
400
404
|
const op = String(other).split(".");
|
|
401
405
|
for (let depth = 0; depth < Math.min(cp.length, op.length); depth++) {
|
|
402
406
|
const cn = Number(cp[depth]);
|
|
403
407
|
const on = Number(op[depth]);
|
|
404
|
-
if (cn > on) return
|
|
405
|
-
if (on > cn) return
|
|
406
|
-
if (!isNaN(cn) && isNaN(on)) return
|
|
407
|
-
if (isNaN(cn) && !isNaN(on)) return
|
|
408
|
+
if (cn > on) return VersionIs.GreaterThan;
|
|
409
|
+
if (on > cn) return VersionIs.LessThan;
|
|
410
|
+
if (!isNaN(cn) && isNaN(on)) return VersionIs.GreaterThan;
|
|
411
|
+
if (isNaN(cn) && !isNaN(on)) return VersionIs.LessThan;
|
|
408
412
|
}
|
|
409
|
-
return
|
|
413
|
+
return VersionIs.EqualTo;
|
|
410
414
|
}
|
|
411
415
|
var isVueSuperiorOrEqualTo3dotFive = versionCompare(vue.version, "3.5.0") === -1 ? false : true;
|
|
412
416
|
|
package/dist/regle-core.d.cts
CHANGED
|
@@ -1137,6 +1137,7 @@ type ResetOptions<TState extends unknown> = RequireOneOrNone<{
|
|
|
1137
1137
|
toInitialState?: boolean;
|
|
1138
1138
|
/**
|
|
1139
1139
|
* Reset validation status and reset form state to the given state
|
|
1140
|
+
* Also set the new state as new initial state.
|
|
1140
1141
|
*/
|
|
1141
1142
|
toState?: TState | (() => TState);
|
|
1142
1143
|
/**
|
|
@@ -1221,11 +1222,11 @@ declare function flatErrors(errors: $InternalRegleErrors, options?: {
|
|
|
1221
1222
|
type InferRegleRoot<T extends (...args: any[]) => Regle<any, any, any, any>> = T extends (...args: any[]) => infer U ? U extends Regle<any, any, any, any> ? Prettify<U['r$']> : never : never;
|
|
1222
1223
|
type InferRegleRules<T extends useRegleFn<any, any>> = T extends useRegleFn<infer U, any> ? UnwrapRuleTree<Partial<U> & Partial<DefaultValidators>> : {};
|
|
1223
1224
|
type InferRegleShortcuts<T extends useRegleFn<any, any>> = T extends useRegleFn<any, infer U> ? U : {};
|
|
1224
|
-
type RegleEnforceRequiredRules<TRules extends keyof DefaultValidators> =
|
|
1225
|
-
[K in TRules
|
|
1225
|
+
type RegleEnforceRequiredRules<TRules extends keyof DefaultValidators> = {
|
|
1226
|
+
[K in TRules]-?: UnwrapRuleWithParams<DefaultValidators[K]>;
|
|
1226
1227
|
};
|
|
1227
|
-
type RegleEnforceCustomRequiredRules<T extends Partial<AllRulesDeclarations> | useRegleFn<any>, TRules extends T extends useRegleFn<any> ? keyof InferRegleRules<T> : keyof T> =
|
|
1228
|
-
[K in TRules]-?: T extends useRegleFn<any> ? K extends keyof InferRegleRules<T> ?
|
|
1228
|
+
type RegleEnforceCustomRequiredRules<T extends Partial<AllRulesDeclarations> | useRegleFn<any>, TRules extends T extends useRegleFn<any> ? keyof InferRegleRules<T> : keyof T> = {
|
|
1229
|
+
[K in TRules]-?: T extends useRegleFn<any> ? K extends keyof InferRegleRules<T> ? UnwrapRuleWithParams<InferRegleRules<T>[K]> : never : K extends keyof T ? NonNullable<T[K]> : never;
|
|
1229
1230
|
};
|
|
1230
1231
|
|
|
1231
1232
|
/**
|
|
@@ -1679,6 +1680,7 @@ type EnumLike = {
|
|
|
1679
1680
|
[k: string]: string | number;
|
|
1680
1681
|
[nu: number]: string;
|
|
1681
1682
|
};
|
|
1683
|
+
type enumType<T extends Record<string, unknown>> = T[keyof T];
|
|
1682
1684
|
type UnwrapMaybeRef<T extends MaybeRef<any> | DeepReactiveState<any>> = T extends Ref<any> ? UnwrapRef<T> : UnwrapNestedRefs<T>;
|
|
1683
1685
|
|
|
1684
1686
|
type CreateFn<T extends any[]> = (...args: T) => any;
|
|
@@ -1709,10 +1711,11 @@ interface RegleInternalRuleDefs<TValue extends any = any, TParams extends any[]
|
|
|
1709
1711
|
_async: TAsync;
|
|
1710
1712
|
readonly _brand: symbol;
|
|
1711
1713
|
}
|
|
1712
|
-
declare
|
|
1713
|
-
Inline
|
|
1714
|
-
Async
|
|
1715
|
-
}
|
|
1714
|
+
declare const InternalRuleType: {
|
|
1715
|
+
readonly Inline: "__inline";
|
|
1716
|
+
readonly Async: "__async";
|
|
1717
|
+
};
|
|
1718
|
+
type InternalRuleType = enumType<typeof InternalRuleType>;
|
|
1716
1719
|
|
|
1717
1720
|
/**
|
|
1718
1721
|
* Returned typed of rules created with `createRule`
|
|
@@ -1740,7 +1743,7 @@ type UnwrapRuleTree<T extends {
|
|
|
1740
1743
|
}> = {
|
|
1741
1744
|
[K in keyof T]: UnwrapRuleWithParams<T[K]>;
|
|
1742
1745
|
};
|
|
1743
|
-
type UnwrapRuleWithParams<T extends RegleRuleRaw<any> | undefined> = T extends RegleRuleWithParamsDefinition<infer TValue, infer TParams, infer TAsync, infer TMetadata> ? RegleRuleDefinition<TValue, TParams, TAsync, TMetadata> : T;
|
|
1746
|
+
type UnwrapRuleWithParams<T extends RegleRuleRaw<any, any, any, any> | undefined> = T extends RegleRuleWithParamsDefinition<infer TValue, infer TParams, infer TAsync, infer TMetadata> ? RegleRuleDefinition<TValue, TParams, TAsync, TMetadata> : T;
|
|
1744
1747
|
/**
|
|
1745
1748
|
* Define a rule Metadata definition
|
|
1746
1749
|
*/
|
|
@@ -1812,6 +1815,13 @@ type RegleRuleTypeReturn<TValue, TParams extends [...any[]]> = {
|
|
|
1812
1815
|
params: [...TParams];
|
|
1813
1816
|
};
|
|
1814
1817
|
|
|
1818
|
+
interface CommonComparationOptions {
|
|
1819
|
+
/**
|
|
1820
|
+
* Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
|
|
1821
|
+
* @default true
|
|
1822
|
+
*/
|
|
1823
|
+
allowEqual?: boolean;
|
|
1824
|
+
}
|
|
1815
1825
|
type DefaultValidators = {
|
|
1816
1826
|
alpha: RegleRuleDefinition<string>;
|
|
1817
1827
|
alphaNum: RegleRuleDefinition<string | number>;
|
|
@@ -1849,10 +1859,16 @@ type DefaultValidators = {
|
|
|
1849
1859
|
integer: RegleRuleDefinition<string | number, [], false, boolean, string | number>;
|
|
1850
1860
|
ipAddress: RegleRuleDefinition<string, [], false, boolean, string>;
|
|
1851
1861
|
macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false, boolean>;
|
|
1852
|
-
maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1862
|
+
maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
1863
|
+
count: number,
|
|
1864
|
+
options?: CommonComparationOptions
|
|
1865
|
+
], false, boolean>;
|
|
1866
|
+
maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
|
|
1867
|
+
minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
1868
|
+
count: number,
|
|
1869
|
+
options?: CommonComparationOptions
|
|
1870
|
+
], false, boolean>;
|
|
1871
|
+
minValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
|
|
1856
1872
|
nativeEnum: RegleRuleDefinition<string | number, [enumLike: EnumLike], false, boolean, string | number>;
|
|
1857
1873
|
numeric: RegleRuleDefinition<string | number, [], false, boolean, string | number>;
|
|
1858
1874
|
oneOf: RegleRuleDefinition<string | number, [options: (string | number)[]], false, boolean, string | number>;
|
|
@@ -2217,7 +2233,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
|
|
|
2217
2233
|
/** Reset the $valid, $metadata and $pending states */
|
|
2218
2234
|
$reset(): void;
|
|
2219
2235
|
/** Returns the original rule validator function. */
|
|
2220
|
-
$validator: ((value: Maybe<TValue>, ...args:
|
|
2236
|
+
$validator: ((value: Maybe<TValue>, ...args: any[]) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>) & ((value: TValue, ...args: [TParams] extends [never[]] ? [] : [unknown[]] extends [TParams] ? any[] : TParams) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>);
|
|
2221
2237
|
} & ([TParams] extends [never[]] ? {} : [unknown[]] extends [TParams] ? {
|
|
2222
2238
|
readonly $params?: any[];
|
|
2223
2239
|
} : {
|
|
@@ -2435,4 +2451,4 @@ declare const useScopedRegle: useRegleFn<Partial<AllRulesDeclarations>, never, {
|
|
|
2435
2451
|
namespace?: MaybeRefOrGetter<string>;
|
|
2436
2452
|
}>;
|
|
2437
2453
|
|
|
2438
|
-
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 MaybeInput, type MaybeOutput, 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 RegleSingleField, 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, flatErrors, inferRules, mergeRegles, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle };
|
|
2454
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonComparationOptions, 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 MaybeInput, type MaybeOutput, 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 RegleSingleField, 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, flatErrors, inferRules, mergeRegles, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle };
|
package/dist/regle-core.d.ts
CHANGED
|
@@ -1137,6 +1137,7 @@ type ResetOptions<TState extends unknown> = RequireOneOrNone<{
|
|
|
1137
1137
|
toInitialState?: boolean;
|
|
1138
1138
|
/**
|
|
1139
1139
|
* Reset validation status and reset form state to the given state
|
|
1140
|
+
* Also set the new state as new initial state.
|
|
1140
1141
|
*/
|
|
1141
1142
|
toState?: TState | (() => TState);
|
|
1142
1143
|
/**
|
|
@@ -1221,11 +1222,11 @@ declare function flatErrors(errors: $InternalRegleErrors, options?: {
|
|
|
1221
1222
|
type InferRegleRoot<T extends (...args: any[]) => Regle<any, any, any, any>> = T extends (...args: any[]) => infer U ? U extends Regle<any, any, any, any> ? Prettify<U['r$']> : never : never;
|
|
1222
1223
|
type InferRegleRules<T extends useRegleFn<any, any>> = T extends useRegleFn<infer U, any> ? UnwrapRuleTree<Partial<U> & Partial<DefaultValidators>> : {};
|
|
1223
1224
|
type InferRegleShortcuts<T extends useRegleFn<any, any>> = T extends useRegleFn<any, infer U> ? U : {};
|
|
1224
|
-
type RegleEnforceRequiredRules<TRules extends keyof DefaultValidators> =
|
|
1225
|
-
[K in TRules
|
|
1225
|
+
type RegleEnforceRequiredRules<TRules extends keyof DefaultValidators> = {
|
|
1226
|
+
[K in TRules]-?: UnwrapRuleWithParams<DefaultValidators[K]>;
|
|
1226
1227
|
};
|
|
1227
|
-
type RegleEnforceCustomRequiredRules<T extends Partial<AllRulesDeclarations> | useRegleFn<any>, TRules extends T extends useRegleFn<any> ? keyof InferRegleRules<T> : keyof T> =
|
|
1228
|
-
[K in TRules]-?: T extends useRegleFn<any> ? K extends keyof InferRegleRules<T> ?
|
|
1228
|
+
type RegleEnforceCustomRequiredRules<T extends Partial<AllRulesDeclarations> | useRegleFn<any>, TRules extends T extends useRegleFn<any> ? keyof InferRegleRules<T> : keyof T> = {
|
|
1229
|
+
[K in TRules]-?: T extends useRegleFn<any> ? K extends keyof InferRegleRules<T> ? UnwrapRuleWithParams<InferRegleRules<T>[K]> : never : K extends keyof T ? NonNullable<T[K]> : never;
|
|
1229
1230
|
};
|
|
1230
1231
|
|
|
1231
1232
|
/**
|
|
@@ -1679,6 +1680,7 @@ type EnumLike = {
|
|
|
1679
1680
|
[k: string]: string | number;
|
|
1680
1681
|
[nu: number]: string;
|
|
1681
1682
|
};
|
|
1683
|
+
type enumType<T extends Record<string, unknown>> = T[keyof T];
|
|
1682
1684
|
type UnwrapMaybeRef<T extends MaybeRef<any> | DeepReactiveState<any>> = T extends Ref<any> ? UnwrapRef<T> : UnwrapNestedRefs<T>;
|
|
1683
1685
|
|
|
1684
1686
|
type CreateFn<T extends any[]> = (...args: T) => any;
|
|
@@ -1709,10 +1711,11 @@ interface RegleInternalRuleDefs<TValue extends any = any, TParams extends any[]
|
|
|
1709
1711
|
_async: TAsync;
|
|
1710
1712
|
readonly _brand: symbol;
|
|
1711
1713
|
}
|
|
1712
|
-
declare
|
|
1713
|
-
Inline
|
|
1714
|
-
Async
|
|
1715
|
-
}
|
|
1714
|
+
declare const InternalRuleType: {
|
|
1715
|
+
readonly Inline: "__inline";
|
|
1716
|
+
readonly Async: "__async";
|
|
1717
|
+
};
|
|
1718
|
+
type InternalRuleType = enumType<typeof InternalRuleType>;
|
|
1716
1719
|
|
|
1717
1720
|
/**
|
|
1718
1721
|
* Returned typed of rules created with `createRule`
|
|
@@ -1740,7 +1743,7 @@ type UnwrapRuleTree<T extends {
|
|
|
1740
1743
|
}> = {
|
|
1741
1744
|
[K in keyof T]: UnwrapRuleWithParams<T[K]>;
|
|
1742
1745
|
};
|
|
1743
|
-
type UnwrapRuleWithParams<T extends RegleRuleRaw<any> | undefined> = T extends RegleRuleWithParamsDefinition<infer TValue, infer TParams, infer TAsync, infer TMetadata> ? RegleRuleDefinition<TValue, TParams, TAsync, TMetadata> : T;
|
|
1746
|
+
type UnwrapRuleWithParams<T extends RegleRuleRaw<any, any, any, any> | undefined> = T extends RegleRuleWithParamsDefinition<infer TValue, infer TParams, infer TAsync, infer TMetadata> ? RegleRuleDefinition<TValue, TParams, TAsync, TMetadata> : T;
|
|
1744
1747
|
/**
|
|
1745
1748
|
* Define a rule Metadata definition
|
|
1746
1749
|
*/
|
|
@@ -1812,6 +1815,13 @@ type RegleRuleTypeReturn<TValue, TParams extends [...any[]]> = {
|
|
|
1812
1815
|
params: [...TParams];
|
|
1813
1816
|
};
|
|
1814
1817
|
|
|
1818
|
+
interface CommonComparationOptions {
|
|
1819
|
+
/**
|
|
1820
|
+
* Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
|
|
1821
|
+
* @default true
|
|
1822
|
+
*/
|
|
1823
|
+
allowEqual?: boolean;
|
|
1824
|
+
}
|
|
1815
1825
|
type DefaultValidators = {
|
|
1816
1826
|
alpha: RegleRuleDefinition<string>;
|
|
1817
1827
|
alphaNum: RegleRuleDefinition<string | number>;
|
|
@@ -1849,10 +1859,16 @@ type DefaultValidators = {
|
|
|
1849
1859
|
integer: RegleRuleDefinition<string | number, [], false, boolean, string | number>;
|
|
1850
1860
|
ipAddress: RegleRuleDefinition<string, [], false, boolean, string>;
|
|
1851
1861
|
macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false, boolean>;
|
|
1852
|
-
maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1862
|
+
maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
1863
|
+
count: number,
|
|
1864
|
+
options?: CommonComparationOptions
|
|
1865
|
+
], false, boolean>;
|
|
1866
|
+
maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
|
|
1867
|
+
minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
1868
|
+
count: number,
|
|
1869
|
+
options?: CommonComparationOptions
|
|
1870
|
+
], false, boolean>;
|
|
1871
|
+
minValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
|
|
1856
1872
|
nativeEnum: RegleRuleDefinition<string | number, [enumLike: EnumLike], false, boolean, string | number>;
|
|
1857
1873
|
numeric: RegleRuleDefinition<string | number, [], false, boolean, string | number>;
|
|
1858
1874
|
oneOf: RegleRuleDefinition<string | number, [options: (string | number)[]], false, boolean, string | number>;
|
|
@@ -2217,7 +2233,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
|
|
|
2217
2233
|
/** Reset the $valid, $metadata and $pending states */
|
|
2218
2234
|
$reset(): void;
|
|
2219
2235
|
/** Returns the original rule validator function. */
|
|
2220
|
-
$validator: ((value: Maybe<TValue>, ...args:
|
|
2236
|
+
$validator: ((value: Maybe<TValue>, ...args: any[]) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>) & ((value: TValue, ...args: [TParams] extends [never[]] ? [] : [unknown[]] extends [TParams] ? any[] : TParams) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>);
|
|
2221
2237
|
} & ([TParams] extends [never[]] ? {} : [unknown[]] extends [TParams] ? {
|
|
2222
2238
|
readonly $params?: any[];
|
|
2223
2239
|
} : {
|
|
@@ -2435,4 +2451,4 @@ declare const useScopedRegle: useRegleFn<Partial<AllRulesDeclarations>, never, {
|
|
|
2435
2451
|
namespace?: MaybeRefOrGetter<string>;
|
|
2436
2452
|
}>;
|
|
2437
2453
|
|
|
2438
|
-
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 MaybeInput, type MaybeOutput, 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 RegleSingleField, 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, flatErrors, inferRules, mergeRegles, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle };
|
|
2454
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonComparationOptions, 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 MaybeInput, type MaybeOutput, 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 RegleSingleField, 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, flatErrors, inferRules, mergeRegles, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle };
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ht=Symbol("regle-rule");function Jt(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 N(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>N(n)))),r=="Map"&&(t=new Map([...e].map(n=>[N(n[0]),N(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Jt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=N(e[n]);}return t}function W(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function qe(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 Ve(e,t,r){let n,a=(...o)=>new Promise(d=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(d);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}var Ke=(r=>(r.Inline="__inline",r.Async="__async",r))(Ke||{});function bt(e,t){return e.some(r=>r[t])}function Et(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function re(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function Tt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function xt(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(d=>d.trim()).filter(d=>d.length>0).length:0}function Je(e,...t){let{validator:r,type:n}=e,a=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(p,...$){return e.validator(p,...re($.length?$:t))},message(p){return typeof e.message=="function"?e.message({...p,$params:re(p?.$params?.length?p.$params:t)}):e.message},active(p){return typeof e.active=="function"?e.active({...p,$params:re(p?.$params?.length?p.$params:t)}):e.active??true},tooltip(p){return typeof e.tooltip=="function"?e.tooltip({...p,$params:re(p?.$params?.length?p.$params:t)}):e.tooltip??[]},exec(p){let $=e.validator(p,...re(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:a,_params:Tt(t),_brand:ht}}function Ye(e){if(typeof e.validator=="function"){let r=Je(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(xt(e.validator)>1){let a=function(...o){return Je(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}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),a=vue.shallowRef(new Map),o=vue.shallowRef(new Map);function d(S){let T=t.value.get(S);if(T)return T;{let D=vue.ref({});return t.value.set(S,D),D}}function p(S){let T=r.value.get(S);if(T)return T;{let D=vue.ref([]);return r.value.set(S,D),D}}function $(S,T,D){o.value.set(`${S}-${T}`,D);}function m(S,T){return o.value.get(`${S}-${T}`)}function h(S,T){S&&T!=null&&o.value.delete(`${S}-${T}`);}function V(S,T){n.value.set(S,T);}function C(S){return n.value.get(S)??false}function M(S,T){e.value.set(S,T);}function w(S,T){let D=e.value.get(S);return D?O(T,D)?{valid:true}:{valid:false}:void 0}function O(S,T){let D=Object.keys(T),c=Object.keys(S);return c.length!==D.length||!c.every(u=>D.includes(u))?false:c.every(u=>{let s=S[u],b=T[u];return !b||!s||typeof s=="function"||typeof b=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((A,B)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let G=re(b._params),X=re(s._params);return G?.[B]===X?.[B]}}):true})}function l(S){let T=a.value.get(S);if(T)return T;{let D=vue.ref(false),c=vue.ref(true),E=vue.ref({}),u=vue.ref(false);return a.value.set(S,{$pending:D,$valid:c,$metadata:E,$validating:u}),{$pending:D,$valid:c,$metadata:E,$validating:u}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:l,getFieldsEntry:d,getCollectionsEntry:p,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:o}}function _e(e){return W(e.value)}function Xe(e,t,r){let n=vue.effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}function ar(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),d=Number(n[a]);if(o>d)return 1;if(d>o)return -1;if(!isNaN(o)&&isNaN(d))return 1;if(isNaN(o)&&!isNaN(d))return -1}return 0}var Ne=ar(vue.version,"3.5.0")!==-1;function lr(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?lr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Dt(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function Ct(e){let t=false,r,n=vue.effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function ke(e,t){return _e(e)||W(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function It(e,t,r=false){return !!e.value&&W(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(W)||Array.isArray(t.value)&&t.value.some(W)}function Ge(e){return !!e.value&&W(e.value)}function we(e){return W(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function Ot(e){return W(e)&&"$fields"in e}function wt(e){return !!e&&"$rules"in e}function Ze({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 Pt({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 At(e){return W(e)&&"$each"in e}function et(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!W(n)))return e;if(At(e)){let n=r?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>Ue(o,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>Ue(a,r,[n])).flat()}function Ue(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!W(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(At(e)){let a=n?.length?e.$self?.map(d=>({error:d,path:n.join(".")}))??[]:e.$self??[],o=e.$each?.map((d,p)=>Ue(d,t,n?.concat(p.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>Ue(o,t,n?.concat(a))).flat()}function Mt({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:o,$debounce:d,modifiers:p}){let $=vue.effectScope(),m={},h,V=vue.ref(false),{$pending:C,$valid:M,$metadata:w,$validating:O}=o.trySetRuleStatusRef(`${a}.${r}`);function l(){$=vue.effectScope(),m=$.run(()=>{let s=vue.ref(false),b=vue.ref(false),A=vue.ref(true),B=vue.ref(false),G=vue.ref(false),X=vue.computed(()=>({$value:n.value,$error:b.value,$dirty:s.value,$pending:B.value,$correct:G.value,$invalid:A.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:C.value},$params:R.value,...w.value})),oe=vue.computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function I(x){let j="",H=e?e[r]?.[x]:void 0;if(H&&(typeof H=="function"?j=H(X.value):j=H),Pe(t)){let g=`_${x}_patched`;H&&!t.value[g]||(typeof t.value[x]=="function"?j=t.value[x](X.value):j=t.value[x]??"");}return j}let q=vue.computed(()=>{let x=I("message");return te(x)&&(x="This field is not valid"),x}),me=vue.computed(()=>I("tooltip")),ue=vue.computed(()=>Pe(t)&&t.value.type?t.value.type:r),i=vue.computed(()=>Pe(t)?t.value.validator:t.value),R=vue.computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),f=vue.computed(()=>`${a}.${ue.value}`);return {$active:oe,$message:q,$type:ue,$validator:i,$params:R,$path:f,$tooltip:me,$fieldCorrect:G,$fieldError:b,$fieldDirty:s,$fieldPending:B,$fieldInvalid:A}}),h=vue.watch(m?.$params,()=>{(p.$autoDirty.value||p.$rewardEarly.value&&m.$fieldError.value)&&c();});}l();function S(){M.value=true,m.$fieldDirty.value&&(C.value=true);}async function T(){let s=false;try{let b=m.$validator.value;if(typeof b!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let A=b(n.value,...m.$params.value),B=n.value;S();let G;if(A instanceof Promise?G=await A:G=A,n.value!==B)return !0;if(typeof G=="boolean")s=G;else {let{$valid:X,...oe}=G;s=X,w.value=oe;}}catch{s=false;}finally{C.value=false;}return s}let D=Ve(T,d??200);async function c(){try{O.value=!0;let s=!1;if(we(t.value)&&t.value._async)s=await D();else {let b=m.$validator.value,A=b(n.value,...m.$params.value);if(A 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(A!=null)if(typeof A=="boolean")s=A;else {let{$valid:B,...G}=A;s=B,w.value=G;}}return M.value=s,s}catch{return false}finally{O.value=false;}}function E(){M.value=true,w.value={},C.value=false,O.value=false,l();}function u(){h(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:C,$valid:M,$metadata:w,$haveAsync:V,$validating:O,$parse:c,$unwatch:u,$watch:l,$reset:E})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:d,externalErrors:p,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:V,initialState:C,shortcuts:M,onValidate:w}){let O=vue.effectScope(),l,S=[],T,D,c,E,u,s=()=>{};function b(){let v=t.value,F=o.checkRuleDeclEntry(n,v);q.value=Object.fromEntries(Object.entries(v).filter(([y])=>y.startsWith("$"))),G(),I.value=Object.fromEntries(Object.entries(t.value).filter(([y])=>!y.startsWith("$")).map(([y,ee])=>{if(ee){let se=vue.toRef(()=>ee);return [y,Mt({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:r,rule:se,ruleKey:y,state:e,path:n,storage:o,$debounce:q.value.$debounce})]}return []}).filter(y=>!!y.length)),l.processShortcuts(),A(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(n),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s()),o.addRuleDeclEntry(n,v);}function A(){s=l.$debounce.value?Ve(oe,l.$debounce.value??l.$haveAnyAsyncRule?100:0):oe;}function B(){I.value&&Object.entries(I.value).forEach(([v,F])=>{F.$unwatch();}),c(),u?.(),l.$dirty.value&&o.setDirtyEntry(n,l.$dirty.value),T?.(),D?.(),O.stop(),O=vue.effectScope(),S.forEach(v=>v.stop()),S=[],h?.(),E?.();}function G(){I.value&&Object.entries(I.value).forEach(([v,F])=>{F.$watch();}),l=O.run(()=>{let v=vue.ref(false),F=vue.ref(false),y=vue.computed(()=>v.value),ee=vue.computed(()=>q.value.$debounce),se=vue.computed(()=>q.value.$lazy!=null?q.value.$lazy:vue.unref(d.lazy)!=null?vue.unref(d.lazy):false),le=vue.computed(()=>q.value.$rewardEarly!=null?q.value.$rewardEarly:vue.unref(d.rewardEarly)!=null?vue.unref(d.rewardEarly):false),U=vue.computed(()=>q.value.$clearExternalErrorsOnChange!=null?q.value.$clearExternalErrorsOnChange:vue.unref(d.clearExternalErrorsOnChange)!=null?vue.unref(d.clearExternalErrorsOnChange):true),P=vue.computed(()=>q.value.$autoDirty!=null?q.value.$autoDirty:vue.unref(d.autoDirty)!=null?vue.unref(d.autoDirty):!le.value),z=vue.computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$validating)),Ie=vue.computed({get:()=>e.value,set(ie){T(),e.value=ie,X();}}),je=vue.computed(()=>ge.value&&!Oe.value&&v.value),ft=vue.computed(()=>Ze({field:{$rules:I.value,$error:je.value,$externalErrors:p?.value,$schemaErrors:$?.value}})),Rt=vue.computed(()=>Ze({field:{$rules:I.value,$error:je.value,$externalErrors:p?.value,$schemaErrors:$?.value},silent:true})),ze=vue.computed(()=>v.value?C.value instanceof Date&&e.value instanceof Date?qe(C.value).getDate()!==qe(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),dt=vue.computed(()=>ze.value),pt=vue.computed(()=>Pt({field:{$rules:I.value}})),mt=vue.computed(()=>P.value?y.value&&!(ge.value||Oe.value):!(ge.value||Oe.value)),Oe=vue.computed(()=>F.value||!le.value?Object.entries(I.value).some(([ie,Q])=>Q.$pending):false),ge=vue.computed(()=>p?.value?.length||$?.value?.length?true:Fe.value?false:!le.value||le.value&&F.value?Object.entries(I.value).some(([ie,Q])=>!Q.$valid):false),gt=vue.computed(()=>a),Fe=vue.computed(()=>!!(te(I.value)&&!m)),yt=vue.computed(()=>p?.value?.length||Fe.value?false:v.value&&!te(e.value)&&!z.value?m?!$?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),qt=vue.computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$haveAsync));function Kt(){M?.fields&&Object.entries(M.fields).forEach(([ie,Q])=>{let $t=vue.effectScope();vt[ie]=$t.run(()=>{let St=vue.ref();return vue.watchEffect(()=>{St.value=Q(vue.reactive({$dirty:v,$externalErrors:p?.value??[],$value:e,$silentValue:Ie,$rules:I,$error:je,$pending:Oe,$invalid:ge,$correct:yt,$errors:ft,$ready:mt,$silentErrors:Rt,$anyDirty:y,$tooltips:pt,$name:gt,$inactive:Fe,$edited:ze,$anyEdited:dt}));}),St}),S.push($t);});}let vt={};return vue.watch(ge,ie=>{ie||(F.value=false);}),{$error:je,$pending:Oe,$invalid:ge,$correct:yt,$debounce:ee,$lazy:se,$errors:ft,$ready:mt,$silentErrors:Rt,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:U,$anyDirty:y,$edited:ze,$anyEdited:dt,$name:gt,$haveAnyAsyncRule:qt,$shortcuts:vt,$validating:z,$tooltips:pt,$dirty:v,triggerPunishment:F,processShortcuts:Kt,$silentValue:Ie,$inactive:Fe}}),X(),c=vue.watch(l.$dirty,v=>{o.setDirtyEntry(n,v),Object.values(I.value).forEach(F=>{F.$fieldDirty=v;});}),u=vue.watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(I.value).forEach(v=>{v.$fieldError=l.$error.value,v.$fieldInvalid=l.$invalid.value,v.$fieldPending=l.$pending.value,v.$fieldCorrect=l.$correct.value;});}),D=vue.watch(l.$invalid,v=>{l.$rewardEarly.value&&!v&&(l.triggerPunishment.value=false);}),E=vue.watch(l.$haveAnyAsyncRule,A);}function X(){T=vue.watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&b(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:V?true:Ne?1:true});}function oe(){Object.values(I.value).forEach(v=>{v.$parse();});}let I=vue.ref({}),q=vue.ref({});b();function me(v,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(n,false),!F)if(v?.toInitialState)B(),e.value=N(C);else if(v?.toState){B();let y;typeof v?.toState=="function"?y=v?.toState():y=v?.toState,C.value=N(y),e.value=N(y);}else C.value=W(e.value)?N(e.value):Array.isArray(e.value)?[...e.value]:e.value;v?.clearExternalErrors&&f(),F||Object.entries(I.value).forEach(([y,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$parse()),F||b();}function ue(v=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&v?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s():v&&s();}async function i(){try{if(m)return w?(ue(!1),w()):{valid:!1,data:e.value};let v=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:v};return m?{valid:!$?.value?.length,data:v}:te(I.value)?{valid:!0,data:v}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:v}}catch{return {valid:false,data:e.value}}}function R(v=true){return l.$dirty.value?e.value:v?{_null:true}:null}function f(){p?.value?.length&&(p.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&s();let{$shortcuts:x,$validating:j,$autoDirty:H,$rewardEarly:g,$clearExternalErrorsOnChange:_,$haveAnyAsyncRule:K,$debounce:Z,$lazy:Y,triggerPunishment:fe,...ce}=l;return vue.reactive({...ce,$externalErrors:p,$value:e,$rules:I,...x,$reset:me,$touch:ue,$validate:i,$unwatch:B,$watch:G,$extractDirtyFields:R,$clearExternalErrors:f})}function nt({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:d,rules:p,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:V,fieldName:C,schemaMode:M}){let w=p.$key?p.$key:$e(),O=`${t}.${String(w)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let l=vue.toRef($?.value??[],r),S=vue.computed(()=>m?.value?.[r]),T=Ee({state:o,rulesDef:vue.toRef(()=>p),customMessages:d,path:O,storage:a,options:n,externalErrors:l,schemaErrors:S,initialState:h,shortcuts:V,fieldName:C,schemaMode:M});if(T){let D=o.value?.$id;T.$id=D??String(w),a.addArrayStatus(e,T.$id,T);}return T}function _t({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:d,schemaErrors:p,schemaMode:$,initialState:m,shortcuts:h,fieldName:V}){let C=vue.effectScope(),M,w=vue.effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=vue.ref(),T=vue.ref(e.value),D,c=vue.ref({}),E=a.getCollectionsEntry(n);O=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(R=>typeof R!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(R=>we(R)||typeof R=="function"):false)})),u(),A();function u(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=$e(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),T.value=c.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?E.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let{scope:f,unwrapped:x}=Xe(t.value.$each,vue.toRef(()=>i),R);f&&l.push(f);let j=vue.toRef(m.value??[],R),H=vue.toRef(d?.value??{},"$each"),g=vue.computed(()=>p?.value?.$each),_=nt({$id:S.value,path:n,customMessages:r,rules:x??{},stateValue:vue.toRef(()=>i),index:R,options:o,storage:a,externalErrors:H,schemaErrors:g,initialState:j,shortcuts:h,fieldName:V,schemaMode:$});return _||null}).filter(i=>!!i):E.value=[],c.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:vue.toRef(d?.value??{},"$self"),schemaErrors:vue.computed(()=>p?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let i=N(E.value);E.value=e.value.filter(R=>typeof R=="object").map((R,f)=>{let x=vue.toRef(()=>R);if(R.$id&&E.value.find(j=>j.$id===R.$id)){let j=a.getArrayStatus(S.value,R.$id);return j?(j.$value=x,j):null}else {let{scope:j,unwrapped:H}=Xe(t.value.$each,x,f);j&&l.push(j);let g=vue.toRef(d?.value??{},"$each"),_=vue.computed(()=>p?.value?.$each??[]),K=nt({$id:S.value,path:n,customMessages:r,rules:H??{},stateValue:x,index:f,options:o,storage:a,externalErrors:g,schemaErrors:_,initialState:vue.toRef(m.value??[],f),shortcuts:h,fieldName:V,schemaMode:$});return K||null}}).filter(R=>!!R),i.filter(R=>!e.value?.find(f=>R.$id===f.$id)).forEach((R,f)=>{a.deleteArrayStatus(S.value,f.toString());});}else E.value=[];}function b(){D=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?u():s();},{deep:Ne?1:true,flush:"pre"});}function A(){b(),C=vue.effectScope(),M=C.run(()=>{let i=vue.computed({get:()=>e.value,set(y){D(),e.value=y,b();}}),R=vue.computed(()=>c.value.$dirty&&(!E.value.length||E.value.every(y=>y.$dirty))),f=vue.computed(()=>c.value.$anyDirty||E.value.some(y=>y.$anyDirty)),x=vue.computed(()=>c.value.$invalid||E.value.some(y=>y.$invalid)),j=vue.computed(()=>(te(c.value.$rules)?true:c.value.$correct)&&(!E.value.length||E.value.every(y=>y.$correct||y.$anyDirty&&!y.$invalid))),H=vue.computed(()=>c.value.$error||E.value.some(y=>y.$error)),g=vue.computed(()=>!(x.value||_.value)),_=vue.computed(()=>c.value.$pending||E.value.some(y=>y.$pending)),K=vue.computed(()=>!!E.value.length&&E.value.every(y=>y.$edited)),Z=vue.computed(()=>c.value.$anyEdited||E.value.some(y=>y.$anyEdited)),Y=vue.computed(()=>({$self:c.value.$errors,$each:E.value.map(y=>y.$errors)})),fe=vue.computed(()=>({$self:c.value.$silentErrors,$each:E.value.map(y=>y.$silentErrors)})),ce=vue.computed(()=>V);function v(){h?.collections&&Object.entries(h?.collections).forEach(([y,ee])=>{let se=vue.effectScope();F[y]=se.run(()=>{let le=vue.ref();return vue.watchEffect(()=>{le.value=ee(vue.reactive({$dirty:R,$error:H,$silentValue:i,$pending:_,$invalid:x,$correct:j,$errors:Y,$ready:g,$silentErrors:fe,$anyDirty:f,$name:ce,$each:E,$self:c,$value:e,$edited:K,$anyEdited:Z}));}),le}),l.push(se);});}let F={};return v(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:_,$errors:Y,$silentErrors:fe,$ready:g,$name:ce,$shortcuts:F,$silentValue:i,$edited:K,$anyEdited:Z}}),O.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 B(){D&&D(),c.value&&c.value.$unwatch(),E.value&&E.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),C.stop(),C=vue.effectScope(),w.stop(),w=vue.effectScope(true),l.forEach(i=>i.stop()),l=[];}function G(i=true,R=false){c.value.$touch(i,R),E.value.forEach(f=>{f.$touch(i,R);});}function X(i,R){if(B(),!R)if(i?.toInitialState)e.value=N(m.value);else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,m.value=N(f),e.value=N(f);}else m.value=N(e.value);i?.clearExternalErrors&&I(),c.value.$reset(),E.value.forEach(f=>{f.$reset(i,true);}),R||u();}async function oe(){let i=e.value;try{return {valid:(await Promise.allSettled([c.value.$validate(),...E.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}catch{return {valid:false,data:i}}}function I(){c.value.$clearExternalErrors(),E.value.forEach(i=>{i.$clearExternalErrors();});}function q(i=true){let R=E.value.map(f=>{if(Ot(f))return f.$extractDirtyFields(i)});return i&&R.every(f=>te(f))&&(R=[]),R}let{$shortcuts:me,...ue}=M;return vue.reactive({$self:c,...ue,...me,$each:E,$value:e,$validate:oe,$unwatch:B,$watch:A,$touch:G,$reset:X,$extractDirtyFields:q,$clearExternalErrors:I})}function Le({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:o,rootSchemaErrors:d,validationGroups:p,initialState:$,fieldName:m,...h}){let V=vue.effectScope(),C,M=[],w=null,O=null,l=null,S=null;async function D(i=true){let R=Object.entries(e.value),f=Object.fromEntries(R.filter(([g,_])=>!!_).map(([g,_])=>{if(_){let K=vue.toRef(t.value??{},g),Z=vue.toRef(()=>_),Y=vue.toRef(a?.value??{},g),fe=vue.computed(()=>o?.value?.[g]),ce=vue.toRef($?.value??{},g);return [g,Ee({state:K,rulesDef:Z,path:r?`${r}.${g}`:g,externalErrors:Y,schemaErrors:fe,initialState:ce,fieldName:g,...h})]}return []})),x=Object.fromEntries(Object.entries(vue.unref(a)??{}).filter(([g,_])=>!(g in e.value)&&!!_).map(([g])=>{let _=vue.toRef(t.value??{},g),K=vue.toRef(a?.value??{},g),Z=vue.computed(()=>o?.value?.[g]),Y=vue.toRef($?.value??{},g);return [g,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:g,...h})]})),j=Object.fromEntries(Object.entries(vue.unref(o)??{}).map(([g])=>{let _=vue.toRef(t.value??{},g),K=vue.toRef(a?.value??{},g),Z=vue.computed(()=>o?.value?.[g]),Y=vue.toRef($?.value??{},g);return [g,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:g,...h})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(x??{}))&&!(g in(j??{}))).map(([g])=>{let _=vue.toRef(t.value??{},g),K=vue.toRef(a?.value??{},g),Z=vue.computed(()=>o?.value?.[g]),Y=vue.toRef($?.value??{},g);return [g,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:g,...h})]}));c.value={...f,...x,...j,...H},i&&s();}let c=h.storage.getFieldsEntry(r);D();function E(){a&&(l=vue.watch(a,()=>{b(),D();},{deep:true}));}function u(){S=vue.watch(t,()=>{b(),D(),G(true,true);},{flush:"sync"});}function s(){n&&(w?.(),w=vue.watch(n,()=>{b(),D();},{deep:true,flush:"post"}),E()),d&&(O?.(),O=vue.watch(d,()=>{b(),D();},{deep:true,flush:"post"})),u(),C=V.run(()=>{let i=vue.computed({get:()=>t.value,set(U){b(),t.value=U,D();}}),R=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$dirty)),f=vue.computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyDirty)),x=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$invalid)),j=vue.computed(()=>{let U=Object.entries(c.value).filter(([P,z])=>wt(z)?!z.$inactive:true);return U.length?U.every(([P,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$error)),g=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),_=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!g.value),K=vue.computed(()=>_.value?f.value&&!(x.value||Y.value):!(x.value||Y.value)),Z=vue.ref(false),Y=vue.computed(()=>Z.value||Object.entries(c.value).some(([U,P])=>P?.$pending)),fe=vue.computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$errors]))),ce=vue.computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$edited)),F=vue.computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyEdited)),y=vue.computed(()=>m);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,P])=>{let z=vue.effectScope();le[U]=z.run(()=>{let Ie=vue.ref();return vue.watchEffect(()=>{Ie.value=P(vue.reactive({$dirty:R,$value:t,$silentValue:i,$error:H,$pending:Y,$invalid:x,$correct:j,$ready:K,$anyDirty:f,$name:y,$silentErrors:ce,$errors:fe,$fields:c,$edited:v,$anyEdited:F}));}),Ie}),M.push(z);});}let se=vue.computed({get:()=>p?Object.fromEntries(Object.entries(p?.(c.value)??{}).map(([U,P])=>P.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,bt(P,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,Et(P,z)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:Y,$errors:fe,$silentErrors:ce,$ready:K,$name:y,$shortcuts:le,$groups:se,$silentValue:i,$edited:v,$anyEdited:F,$localPending:Z}});}function b(){w?.(),l?.(),S?.(),O?.(),M=[],C={},c.value&&Object.entries(c.value).forEach(([i,R])=>{R.$unwatch();});}function A(){Object.entries(c.value).forEach(([i,R])=>{R.$clearExternalErrors();});}function B(i,R){if(l?.(),b(),!R)if(i?.toInitialState)t.value=N({...$.value??{}});else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,$.value=N(f),t.value=N(f);}else $.value=N(t.value);Object.values(c.value).forEach(f=>{f.$reset(i,true);}),i?.clearExternalErrors&&A(),E(),R||D();}function G(i=true,R=false){Object.values(c.value).forEach(f=>{f.$touch(i,R);});}function X(i){return i.filter(([R,f])=>W(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function oe(i=true){let R=Object.entries(c.value).map(([f,x])=>[f,x.$extractDirtyFields(i)]);return i&&(R=X(R)),Object.fromEntries(R)}async function I(){try{if(h.schemaMode)return h.onValidate?(G(!1),C.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let i=t.value;return {valid:(await Promise.allSettled(Object.values(c.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:q,$localPending:me,...ue}=C;return vue.reactive({...ue,...q,$fields:c,$value:t,$reset:B,$touch:G,$validate:I,$unwatch:b,$watch:s,$clearExternalErrors:A,$extractDirtyFields:oe})}function Ee({rulesDef:e,...t}){if(It(e,t.state,t.schemaMode))return _t({rulesDef:e,...t});if(ke(t.state,e)){if(_e(t.state))return Le({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let d=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,p=>{d.value=p;},{deep:true}),vue.watch(d,p=>{t.state.value=p;},{deep:true}),{fakeState:d}}),{state:a,...o}=t;return Le({rulesDef:e,...o,state:n.fakeState})}}else if(Ge(e))return be({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o,schemaErrors:d,schemaMode:p=false,onValidate:$}){let m=Qe(),h=vue.ref();return ke(n,r)?h.value=Le({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:$}):Ge(r)&&(h.value=be({rulesDef:r,state:n,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:p,schemaErrors:d,onValidate:$})),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function ot(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,d,p){let $=vue.isRef(d)?d:vue.computed(typeof d=="function"?d:()=>d),m={...n,...p},h=vue.isRef(o)?o:vue.ref(o),V=vue.ref(W(h.value)?{...N(h.value)}:N(h.value));return {r$:Ce({scopeRules:$,state:h,options:m,initialState:V,customRules:e,shortcuts:r}).regle}}return a}var Be=ot();function st(){function e(t,r){return r}return e}var it=st();function Ut({rules:e,modifiers:t,shortcuts:r}){let n=ot(e,t,r),a=st();return {useRegle:n,inferRules:a}}function Me(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(u=>u.$value):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$value])),set:u=>{r||typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$value=b);}}),a=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentValue])),set:u=>{typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$silentValue=b);}}),o=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$dirty)}),d=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$anyDirty)),p=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$invalid)),$=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),m=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$error)),h=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$ready)}),V=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$pending)),C=vue.computed(()=>r?Object.entries(e).map(([u,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$errors]))),M=vue.computed(()=>r?Object.entries(e).map(([u,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentErrors]))),w=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$edited)}),O=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$anyEdited)),l=vue.computed(()=>r?Object.values(e):e);function S(u){Object.values(e).forEach(s=>{s.$reset(u);});}function T(){Object.values(e).forEach(u=>{u.$touch();});}function D(u=true){return Object.values(e).map(s=>s.$extractDirtyFields(u))}function c(){Object.values(e).forEach(u=>{u.$clearExternalErrors();});}async function E(){try{let u=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(A=>A.$validate()))).every(A=>A.status==="fulfilled"?A.value.valid===!0:!1),data:u}}catch{return {valid:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:a},$errors:C,$silentErrors:M,$instances:l,$value:n,$dirty:o,$anyDirty:d,$invalid:p,$correct:$,$error:m,$pending:V,$ready:h,$edited:w,$anyEdited:O,$reset:S,$touch:T,$validate:E,$extractDirtyFields:D,$clearExternalErrors:c})}function Lt(e){function t(r){let n=vue.computed(()=>vue.toValue(r));d();let a=vue.ref(p(e.value)),o=vue.reactive({r$:a});function d(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,d),vue.watch(e,$=>{a.value=p($);},{deep:true});function p($){if(n.value){let m=$[n.value]??{};return Me(m,true)}else return Me($["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function zt(e,t){let r=t??Be;return {useScopedRegle:(a,o,d)=>{let{namespace:p,...$}=d??{},m=vue.computed(()=>vue.toValue(p)),h=vue.ref(`${Object.keys(e.value).length+1}-${$e()}`),V=vue.computed(()=>`instance-${h.value}`),{r$:C}=r(a,o,$);w(),Dt(M),vue.watch(m,(O,l)=>{M(l),w();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let O=vue.getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&M();});function M(O){let l=O??m.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:M,register:w}}}}function He(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Ct(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=zt(r,e?.customUseRegle),{useCollectScope:a}=Lt(r);return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:ut,useScopedRegle:ct}=He();
|
|
2
|
-
exports.InternalRuleType=
|
|
1
|
+
'use strict';var vue=require('vue');function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var bt=Symbol("regle-rule");function Yt(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 N(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>N(r)))),n=="Map"&&(t=new Map([...e].map(r=>[N(r[0]),N(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,Yt(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=N(e[r]);}return t}function W(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ke(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 _e(e,t,n){let r,a=(...o)=>new Promise(d=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(d);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Je={Inline:"__inline",Async:"__async"};function Et(e,t){return e.some(n=>n[t])}function Tt(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function xt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function Dt(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(d=>d.trim()).filter(d=>d.length>0).length:0}function Ye(e,...t){let{validator:n,type:r}=e,a=r===Je.Async||n.constructor.name==="AsyncFunction";return {...{validator(p,...$){return e.validator(p,...re($.length?$:t))},message(p){return typeof e.message=="function"?e.message({...p,$params:re(p?.$params?.length?p.$params:t)}):e.message},active(p){return typeof e.active=="function"?e.active({...p,$params:re(p?.$params?.length?p.$params:t)}):e.active??true},tooltip(p){return typeof e.tooltip=="function"?e.tooltip({...p,$params:re(p?.$params?.length?p.$params:t)}):e.tooltip??[]},exec(p){let $=e.validator(p,...re(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:a,_params:xt(t),_brand:bt}}function Qe(e){if(typeof e.validator=="function"){let n=Ye(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(Dt(e.validator)>1){let a=function(...o){return Ye(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("Validator must be a function")}function Xe(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),n=vue.shallowRef(new Map),r=vue.shallowRef(new Map),a=vue.shallowRef(new Map),o=vue.shallowRef(new Map);function d(S){let T=t.value.get(S);if(T)return T;{let D=vue.ref({});return t.value.set(S,D),D}}function p(S){let T=n.value.get(S);if(T)return T;{let D=vue.ref([]);return n.value.set(S,D),D}}function $(S,T,D){o.value.set(`${S}-${T}`,D);}function m(S,T){return o.value.get(`${S}-${T}`)}function h(S,T){S&&T!=null&&o.value.delete(`${S}-${T}`);}function V(S,T){r.value.set(S,T);}function I(S){return r.value.get(S)??false}function M(S,T){e.value.set(S,T);}function w(S,T){let D=e.value.get(S);return D?O(T,D)?{valid:true}:{valid:false}:void 0}function O(S,T){let D=Object.keys(T),c=Object.keys(S);return c.length!==D.length||!c.every(u=>D.includes(u))?false:c.every(u=>{let s=S[u],b=T[u];return !b||!s||typeof s=="function"||typeof b=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((A,B)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let G=re(b._params),X=re(s._params);return G?.[B]===X?.[B]}}):true})}function l(S){let T=a.value.get(S);if(T)return T;{let D=vue.ref(false),c=vue.ref(true),E=vue.ref({}),u=vue.ref(false);return a.value.set(S,{$pending:D,$valid:c,$metadata:E,$validating:u}),{$pending:D,$valid:c,$metadata:E,$validating:u}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:I,trySetRuleStatusRef:l,getFieldsEntry:d,getCollectionsEntry:p,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:o}}function Ne(e){return W(e.value)}function Ze(e,t,n){let r=vue.effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var we={LessThan:-1,EqualTo:0,GreaterThan:1};function lr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),d=Number(r[a]);if(o>d)return we.GreaterThan;if(d>o)return we.LessThan;if(!isNaN(o)&&isNaN(d))return we.GreaterThan;if(isNaN(o)&&!isNaN(d))return we.LessThan}return we.EqualTo}var ke=lr(vue.version,"3.5.0")!==-1;function or(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?or():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function It(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function Ct(e){let t=false,n,r=vue.effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||W(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>Pe(r)||typeof r=="function")}function Ot(e,t,n=false){return !!e.value&&W(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(W)||Array.isArray(t.value)&&t.value.some(W)}function Ue(e){return !!e.value&&W(e.value)}function Pe(e){return W(e)&&"_validator"in e}function Ae(e){return typeof e.value!="function"}function wt(e){return W(e)&&"$fields"in e}function Pt(e){return !!e&&"$rules"in e}function et({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function At({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function Mt(e){return W(e)&&"$each"in e}function tt(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!W(r)))return e;if(Mt(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!W(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(Mt(e)){let a=r?.length?e.$self?.map(d=>({error:d,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((d,p)=>We(d,t,r?.concat(p.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function jt({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:d,modifiers:p}){let $=vue.effectScope(),m={},h,V=vue.ref(false),{$pending:I,$valid:M,$metadata:w,$validating:O}=o.trySetRuleStatusRef(`${a}.${n}`);function l(){$=vue.effectScope(),m=$.run(()=>{let s=vue.ref(false),b=vue.ref(false),A=vue.ref(true),B=vue.ref(false),G=vue.ref(false),X=vue.computed(()=>({$value:r.value,$error:b.value,$dirty:s.value,$pending:B.value,$correct:G.value,$invalid:A.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:I.value},$params:R.value,...w.value})),oe=vue.computed(()=>Ae(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function C(x){let j="",H=e?e[n]?.[x]:void 0;if(H&&(typeof H=="function"?j=H(X.value):j=H),Ae(t)){let y=`_${x}_patched`;H&&!t.value[y]||(typeof t.value[x]=="function"?j=t.value[x](X.value):j=t.value[x]??"");}return j}let q=vue.computed(()=>{let x=C("message");return te(x)&&(x="This field is not valid"),x}),me=vue.computed(()=>C("tooltip")),ue=vue.computed(()=>Ae(t)&&t.value.type?t.value.type:n),i=vue.computed(()=>Ae(t)?t.value.validator:t.value),R=vue.computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),f=vue.computed(()=>`${a}.${ue.value}`);return {$active:oe,$message:q,$type:ue,$validator:i,$params:R,$path:f,$tooltip:me,$fieldCorrect:G,$fieldError:b,$fieldDirty:s,$fieldPending:B,$fieldInvalid:A}}),h=vue.watch(m?.$params,()=>{(p.$autoDirty.value||p.$rewardEarly.value&&m.$fieldError.value)&&c();});}l();function S(){M.value=true,m.$fieldDirty.value&&(I.value=true);}async function T(){let s=false;try{let b=m.$validator.value;if(typeof b!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let A=b(r.value,...m.$params.value),B=r.value;S();let G;if(A instanceof Promise?G=await A:G=A,r.value!==B)return !0;if(typeof G=="boolean")s=G;else {let{$valid:X,...oe}=G;s=X,w.value=oe;}}catch{s=false;}finally{I.value=false;}return s}let D=_e(T,d??200);async function c(){try{O.value=!0;let s=!1;if(Pe(t.value)&&t.value._async)s=await D();else {let b=m.$validator.value,A=b(r.value,...m.$params.value);if(A 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(A!=null)if(typeof A=="boolean")s=A;else {let{$valid:B,...G}=A;s=B,w.value=G;}}return M.value=s,s}catch{return false}finally{O.value=false;}}function E(){M.value=true,w.value={},I.value=false,O.value=false,l();}function u(){h(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:I,$valid:M,$metadata:w,$haveAsync:V,$validating:O,$parse:c,$unwatch:u,$watch:l,$reset:E})}function be({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:d,externalErrors:p,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:V,initialState:I,shortcuts:M,onValidate:w}){let O=vue.effectScope(),l,S=[],T,D,c,E,u,s=()=>{};function b(){let v=t.value,F=o.checkRuleDeclEntry(r,v);q.value=Object.fromEntries(Object.entries(v).filter(([g])=>g.startsWith("$"))),G(),C.value=Object.fromEntries(Object.entries(t.value).filter(([g])=>!g.startsWith("$")).map(([g,ee])=>{if(ee){let se=vue.toRef(()=>ee);return [g,jt({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:g,state:e,path:r,storage:o,$debounce:q.value.$debounce})]}return []}).filter(g=>!!g.length)),l.processShortcuts(),A(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s()),o.addRuleDeclEntry(r,v);}function A(){s=l.$debounce.value?_e(oe,l.$debounce.value??l.$haveAnyAsyncRule?100:0):oe;}function B(){C.value&&Object.entries(C.value).forEach(([v,F])=>{F.$unwatch();}),c(),u?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),T?.(),D?.(),O.stop(),O=vue.effectScope(),S.forEach(v=>v.stop()),S=[],h?.(),E?.();}function G(){C.value&&Object.entries(C.value).forEach(([v,F])=>{F.$watch();}),l=O.run(()=>{let v=vue.ref(false),F=vue.ref(false),g=vue.computed(()=>v.value),ee=vue.computed(()=>q.value.$debounce),se=vue.computed(()=>q.value.$lazy!=null?q.value.$lazy:vue.unref(d.lazy)!=null?vue.unref(d.lazy):false),le=vue.computed(()=>q.value.$rewardEarly!=null?q.value.$rewardEarly:vue.unref(d.rewardEarly)!=null?vue.unref(d.rewardEarly):false),U=vue.computed(()=>q.value.$clearExternalErrorsOnChange!=null?q.value.$clearExternalErrorsOnChange:vue.unref(d.clearExternalErrorsOnChange)!=null?vue.unref(d.clearExternalErrorsOnChange):true),P=vue.computed(()=>q.value.$autoDirty!=null?q.value.$autoDirty:vue.unref(d.autoDirty)!=null?vue.unref(d.autoDirty):!le.value),z=vue.computed(()=>Object.entries(C.value).some(([ie,Q])=>Q.$validating)),Ce=vue.computed({get:()=>e.value,set(ie){T(),e.value=ie,X();}}),Fe=vue.computed(()=>ye.value&&!Oe.value&&v.value),Rt=vue.computed(()=>et({field:{$rules:C.value,$error:Fe.value,$externalErrors:p?.value,$schemaErrors:$?.value}})),dt=vue.computed(()=>et({field:{$rules:C.value,$error:Fe.value,$externalErrors:p?.value,$schemaErrors:$?.value},silent:true})),qe=vue.computed(()=>v.value?I.value instanceof Date&&e.value instanceof Date?Ke(I.value).getDate()!==Ke(e.value).getDate():I.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(I.value)?e.value.length!==I.value.length:I.value!==e.value:false),pt=vue.computed(()=>qe.value),mt=vue.computed(()=>At({field:{$rules:C.value}})),yt=vue.computed(()=>P.value?g.value&&!(ye.value||Oe.value):!(ye.value||Oe.value)),Oe=vue.computed(()=>F.value||!le.value?Object.entries(C.value).some(([ie,Q])=>Q.$pending):false),ye=vue.computed(()=>p?.value?.length||$?.value?.length?true:Ve.value?false:!le.value||le.value&&F.value?Object.entries(C.value).some(([ie,Q])=>!Q.$valid):false),gt=vue.computed(()=>a),Ve=vue.computed(()=>!!(te(C.value)&&!m)),vt=vue.computed(()=>p?.value?.length||Ve.value?false:v.value&&!te(e.value)&&!z.value?m?!$?.value?.length:Object.values(C.value).some(Q=>Q.$active)?Object.values(C.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),Kt=vue.computed(()=>Object.entries(C.value).some(([ie,Q])=>Q.$haveAsync));function Jt(){M?.fields&&Object.entries(M.fields).forEach(([ie,Q])=>{let St=vue.effectScope();$t[ie]=St.run(()=>{let ht=vue.ref();return vue.watchEffect(()=>{ht.value=Q(vue.reactive({$dirty:v,$externalErrors:p?.value??[],$value:e,$silentValue:Ce,$rules:C,$error:Fe,$pending:Oe,$invalid:ye,$correct:vt,$errors:Rt,$ready:yt,$silentErrors:dt,$anyDirty:g,$tooltips:mt,$name:gt,$inactive:Ve,$edited:qe,$anyEdited:pt}));}),ht}),S.push(St);});}let $t={};return vue.watch(ye,ie=>{ie||(F.value=false);}),{$error:Fe,$pending:Oe,$invalid:ye,$correct:vt,$debounce:ee,$lazy:se,$errors:Rt,$ready:yt,$silentErrors:dt,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:U,$anyDirty:g,$edited:qe,$anyEdited:pt,$name:gt,$haveAnyAsyncRule:Kt,$shortcuts:$t,$validating:z,$tooltips:mt,$dirty:v,triggerPunishment:F,processShortcuts:Jt,$silentValue:Ce,$inactive:Ve}}),X(),c=vue.watch(l.$dirty,v=>{o.setDirtyEntry(r,v),Object.values(C.value).forEach(F=>{F.$fieldDirty=v;});}),u=vue.watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(C.value).forEach(v=>{v.$fieldError=l.$error.value,v.$fieldInvalid=l.$invalid.value,v.$fieldPending=l.$pending.value,v.$fieldCorrect=l.$correct.value;});}),D=vue.watch(l.$invalid,v=>{l.$rewardEarly.value&&!v&&(l.triggerPunishment.value=false);}),E=vue.watch(l.$haveAnyAsyncRule,A);}function X(){T=vue.watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&b(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:V?true:ke?1:true});}function oe(){Object.values(C.value).forEach(v=>{v.$parse();});}let C=vue.ref({}),q=vue.ref({});b();function me(v,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!F)if(v?.toInitialState)B(),e.value=N(I);else if(v?.toState){B();let g;typeof v?.toState=="function"?g=v?.toState():g=v?.toState,I.value=N(g),e.value=N(g);}else I.value=W(e.value)?N(e.value):Array.isArray(e.value)?[...e.value]:e.value;v?.clearExternalErrors&&f(),F||Object.entries(C.value).forEach(([g,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$parse()),F||b();}function ue(v=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&v?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s():v&&s();}async function i(){try{if(m)return w?(ue(!1),w()):{valid:!1,data:e.value};let v=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:v};return m?{valid:!$?.value?.length,data:v}:te(C.value)?{valid:!0,data:v}:{valid:(await Promise.allSettled(Object.entries(C.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:v}}catch{return {valid:false,data:e.value}}}function R(v=true){return l.$dirty.value?e.value:v?{_null:true}:null}function f(){p?.value?.length&&(p.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&s();let{$shortcuts:x,$validating:j,$autoDirty:H,$rewardEarly:y,$clearExternalErrorsOnChange:_,$haveAnyAsyncRule:K,$debounce:Z,$lazy:Y,triggerPunishment:fe,...ce}=l;return vue.reactive({...ce,$externalErrors:p,$value:e,$rules:C,...x,$reset:me,$touch:ue,$validate:i,$unwatch:B,$watch:G,$extractDirtyFields:R,$clearExternalErrors:f})}function at({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:d,rules:p,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:V,fieldName:I,schemaMode:M}){let w=p.$key?p.$key:$e(),O=`${t}.${String(w)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let l=vue.toRef($?.value??[],n),S=vue.computed(()=>m?.value?.[n]),T=Ee({state:o,rulesDef:vue.toRef(()=>p),customMessages:d,path:O,storage:a,options:r,externalErrors:l,schemaErrors:S,initialState:h,shortcuts:V,fieldName:I,schemaMode:M});if(T){let D=o.value?.$id;T.$id=D??String(w),a.addArrayStatus(e,T.$id,T);}return T}function Nt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:d,schemaErrors:p,schemaMode:$,initialState:m,shortcuts:h,fieldName:V}){let I=vue.effectScope(),M,w=vue.effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=vue.ref(),T=vue.ref(e.value),D,c=vue.ref({}),E=a.getCollectionsEntry(r);O=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(R=>typeof R!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(R=>Pe(R)||typeof R=="function"):false)})),u(),A();function u(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=$e(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),T.value=c.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?E.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let{scope:f,unwrapped:x}=Ze(t.value.$each,vue.toRef(()=>i),R);f&&l.push(f);let j=vue.toRef(m.value??[],R),H=vue.toRef(d?.value??{},"$each"),y=vue.computed(()=>p?.value?.$each),_=at({$id:S.value,path:r,customMessages:n,rules:x??{},stateValue:vue.toRef(()=>i),index:R,options:o,storage:a,externalErrors:H,schemaErrors:y,initialState:j,shortcuts:h,fieldName:V,schemaMode:$});return _||null}).filter(i=>!!i):E.value=[],c.value=be({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:vue.toRef(d?.value??{},"$self"),schemaErrors:vue.computed(()=>p?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let i=N(E.value);E.value=e.value.filter(R=>typeof R=="object").map((R,f)=>{let x=vue.toRef(()=>R);if(R.$id&&E.value.find(j=>j.$id===R.$id)){let j=a.getArrayStatus(S.value,R.$id);return j?(j.$value=x,j):null}else {let{scope:j,unwrapped:H}=Ze(t.value.$each,x,f);j&&l.push(j);let y=vue.toRef(d?.value??{},"$each"),_=vue.computed(()=>p?.value?.$each??[]),K=at({$id:S.value,path:r,customMessages:n,rules:H??{},stateValue:x,index:f,options:o,storage:a,externalErrors:y,schemaErrors:_,initialState:vue.toRef(m.value??[],f),shortcuts:h,fieldName:V,schemaMode:$});return K||null}}).filter(R=>!!R),i.filter(R=>!e.value?.find(f=>R.$id===f.$id)).forEach((R,f)=>{a.deleteArrayStatus(S.value,f.toString());});}else E.value=[];}function b(){D=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?u():s();},{deep:ke?1:true,flush:"pre"});}function A(){b(),I=vue.effectScope(),M=I.run(()=>{let i=vue.computed({get:()=>e.value,set(g){D(),e.value=g,b();}}),R=vue.computed(()=>c.value.$dirty&&(!E.value.length||E.value.every(g=>g.$dirty))),f=vue.computed(()=>c.value.$anyDirty||E.value.some(g=>g.$anyDirty)),x=vue.computed(()=>c.value.$invalid||E.value.some(g=>g.$invalid)),j=vue.computed(()=>(te(c.value.$rules)?true:c.value.$correct)&&(!E.value.length||E.value.every(g=>g.$correct||g.$anyDirty&&!g.$invalid))),H=vue.computed(()=>c.value.$error||E.value.some(g=>g.$error)),y=vue.computed(()=>!(x.value||_.value)),_=vue.computed(()=>c.value.$pending||E.value.some(g=>g.$pending)),K=vue.computed(()=>!!E.value.length&&E.value.every(g=>g.$edited)),Z=vue.computed(()=>c.value.$anyEdited||E.value.some(g=>g.$anyEdited)),Y=vue.computed(()=>({$self:c.value.$errors,$each:E.value.map(g=>g.$errors)})),fe=vue.computed(()=>({$self:c.value.$silentErrors,$each:E.value.map(g=>g.$silentErrors)})),ce=vue.computed(()=>V);function v(){h?.collections&&Object.entries(h?.collections).forEach(([g,ee])=>{let se=vue.effectScope();F[g]=se.run(()=>{let le=vue.ref();return vue.watchEffect(()=>{le.value=ee(vue.reactive({$dirty:R,$error:H,$silentValue:i,$pending:_,$invalid:x,$correct:j,$errors:Y,$ready:y,$silentErrors:fe,$anyDirty:f,$name:ce,$each:E,$self:c,$value:e,$edited:K,$anyEdited:Z}));}),le}),l.push(se);});}let F={};return v(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:_,$errors:Y,$silentErrors:fe,$ready:y,$name:ce,$shortcuts:F,$silentValue:i,$edited:K,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function B(){D&&D(),c.value&&c.value.$unwatch(),E.value&&E.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),I.stop(),I=vue.effectScope(),w.stop(),w=vue.effectScope(true),l.forEach(i=>i.stop()),l=[];}function G(i=true,R=false){c.value.$touch(i,R),E.value.forEach(f=>{f.$touch(i,R);});}function X(i,R){if(B(),!R)if(i?.toInitialState)e.value=N(m.value);else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,m.value=N(f),e.value=N(f);}else m.value=N(e.value);i?.clearExternalErrors&&C(),c.value.$reset(),E.value.forEach(f=>{f.$reset(i,true);}),R||u();}async function oe(){let i=e.value;try{return {valid:(await Promise.allSettled([c.value.$validate(),...E.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}catch{return {valid:false,data:i}}}function C(){c.value.$clearExternalErrors(),E.value.forEach(i=>{i.$clearExternalErrors();});}function q(i=true){let R=E.value.map(f=>{if(wt(f))return f.$extractDirtyFields(i)});return i&&R.every(f=>te(f))&&(R=[]),R}let{$shortcuts:me,...ue}=M;return vue.reactive({$self:c,...ue,...me,$each:E,$value:e,$validate:oe,$unwatch:B,$watch:A,$touch:G,$reset:X,$extractDirtyFields:q,$clearExternalErrors:C})}function Be({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:d,validationGroups:p,initialState:$,fieldName:m,...h}){let V=vue.effectScope(),I,M=[],w=null,O=null,l=null,S=null;async function D(i=true){let R=Object.entries(e.value),f=Object.fromEntries(R.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=vue.toRef(t.value??{},y),Z=vue.toRef(()=>_),Y=vue.toRef(a?.value??{},y),fe=vue.computed(()=>o?.value?.[y]),ce=vue.toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:n?`${n}.${y}`:y,externalErrors:Y,schemaErrors:fe,initialState:ce,fieldName:y,...h})]}return []})),x=Object.fromEntries(Object.entries(vue.unref(a)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(a?.value??{},y),Z=vue.computed(()=>o?.value?.[y]),Y=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:n?`${n}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...h})]})),j=Object.fromEntries(Object.entries(vue.unref(o)??{}).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(a?.value??{},y),Z=vue.computed(()=>o?.value?.[y]),Y=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:n?`${n}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...h})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(x??{}))&&!(y in(j??{}))).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(a?.value??{},y),Z=vue.computed(()=>o?.value?.[y]),Y=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:n?`${n}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...h})]}));c.value={...f,...x,...j,...H},i&&s();}let c=h.storage.getFieldsEntry(n);D();function E(){a&&(l=vue.watch(a,()=>{b(),D();},{deep:true}));}function u(){S=vue.watch(t,()=>{b(),D(),G(true,true);},{flush:"sync"});}function s(){r&&(w?.(),w=vue.watch(r,()=>{b(),D();},{deep:true,flush:"post"}),E()),d&&(O?.(),O=vue.watch(d,()=>{b(),D();},{deep:true,flush:"post"})),u(),I=V.run(()=>{let i=vue.computed({get:()=>t.value,set(U){b(),t.value=U,D();}}),R=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$dirty)),f=vue.computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyDirty)),x=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$invalid)),j=vue.computed(()=>{let U=Object.entries(c.value).filter(([P,z])=>Pt(z)?!z.$inactive:true);return U.length?U.every(([P,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$error)),y=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),_=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!y.value),K=vue.computed(()=>_.value?f.value&&!(x.value||Y.value):!(x.value||Y.value)),Z=vue.ref(false),Y=vue.computed(()=>Z.value||Object.entries(c.value).some(([U,P])=>P?.$pending)),fe=vue.computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$errors]))),ce=vue.computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$edited)),F=vue.computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyEdited)),g=vue.computed(()=>m);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,P])=>{let z=vue.effectScope();le[U]=z.run(()=>{let Ce=vue.ref();return vue.watchEffect(()=>{Ce.value=P(vue.reactive({$dirty:R,$value:t,$silentValue:i,$error:H,$pending:Y,$invalid:x,$correct:j,$ready:K,$anyDirty:f,$name:g,$silentErrors:ce,$errors:fe,$fields:c,$edited:v,$anyEdited:F}));}),Ce}),M.push(z);});}let se=vue.computed({get:()=>p?Object.fromEntries(Object.entries(p?.(c.value)??{}).map(([U,P])=>P.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,Et(P,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,Tt(P,z)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:Y,$errors:fe,$silentErrors:ce,$ready:K,$name:g,$shortcuts:le,$groups:se,$silentValue:i,$edited:v,$anyEdited:F,$localPending:Z}});}function b(){w?.(),l?.(),S?.(),O?.(),M=[],I={},c.value&&Object.entries(c.value).forEach(([i,R])=>{R.$unwatch();});}function A(){Object.entries(c.value).forEach(([i,R])=>{R.$clearExternalErrors();});}function B(i,R){if(l?.(),b(),!R)if(i?.toInitialState)t.value=N({...$.value??{}});else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,$.value=N(f),t.value=N(f);}else $.value=N(t.value);Object.values(c.value).forEach(f=>{f.$reset(i,true);}),i?.clearExternalErrors&&A(),E(),R||D();}function G(i=true,R=false){Object.values(c.value).forEach(f=>{f.$touch(i,R);});}function X(i){return i.filter(([R,f])=>W(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function oe(i=true){let R=Object.entries(c.value).map(([f,x])=>[f,x.$extractDirtyFields(i)]);return i&&(R=X(R)),Object.fromEntries(R)}async function C(){try{if(h.schemaMode)return h.onValidate?(G(!1),I.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let i=t.value;return {valid:(await Promise.allSettled(Object.values(c.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}}catch{return {valid:false,data:t.value}}finally{I.$localPending.value=false;}}let{$shortcuts:q,$localPending:me,...ue}=I;return vue.reactive({...ue,...q,$fields:c,$value:t,$reset:B,$touch:G,$validate:C,$unwatch:b,$watch:s,$clearExternalErrors:A,$extractDirtyFields:oe})}function Ee({rulesDef:e,...t}){if(Ot(e,t.state,t.schemaMode))return Nt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Be({rulesDef:e,...t});{let r=vue.effectScope().run(()=>{let d=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,p=>{d.value=p;},{deep:true}),vue.watch(d,p=>{t.state.value=p;},{deep:true}),{fakeState:d}}),{state:a,...o}=t;return Be({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return be({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:d,schemaMode:p=false,onValidate:$}){let m=Xe(),h=vue.ref();return Ge(r,n)?h.value=Be({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:$}):Ue(n)&&(h.value=be({rulesDef:n,state:r,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:p,schemaErrors:d,onValidate:$})),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function st(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,d,p){let $=vue.isRef(d)?d:vue.computed(typeof d=="function"?d:()=>d),m={...r,...p},h=vue.isRef(o)?o:vue.ref(o),V=vue.ref(W(h.value)?{...N(h.value)}:N(h.value));return {r$:Ie({scopeRules:$,state:h,options:m,initialState:V,customRules:e,shortcuts:n}).regle}}return a}var He=st();function it(){function e(t,n){return n}return e}var ut=it();function Wt({rules:e,modifiers:t,shortcuts:n}){let r=st(e,t,n),a=it();return {useRegle:r,inferRules:a}}function je(e,t){let n=t??false,r=vue.computed({get:()=>n?Object.values(e).map(u=>u.$value):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$value])),set:u=>{n||typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$value=b);}}),a=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentValue])),set:u=>{typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$silentValue=b);}}),o=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$dirty)}),d=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$anyDirty)),p=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$invalid)),$=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),m=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$error)),h=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$ready)}),V=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$pending)),I=vue.computed(()=>n?Object.entries(e).map(([u,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$errors]))),M=vue.computed(()=>n?Object.entries(e).map(([u,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentErrors]))),w=vue.computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$edited)}),O=vue.computed(()=>Object.entries(e).some(([u,s])=>s?.$anyEdited)),l=vue.computed(()=>n?Object.values(e):e);function S(u){Object.values(e).forEach(s=>{s.$reset(u);});}function T(){Object.values(e).forEach(u=>{u.$touch();});}function D(u=true){return Object.values(e).map(s=>s.$extractDirtyFields(u))}function c(){Object.values(e).forEach(u=>{u.$clearExternalErrors();});}async function E(){try{let u=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(A=>A.$validate()))).every(A=>A.status==="fulfilled"?A.value.valid===!0:!1),data:u}}catch{return {valid:false,data:r.value}}}return vue.reactive({...!n&&{$silentValue:a},$errors:I,$silentErrors:M,$instances:l,$value:r,$dirty:o,$anyDirty:d,$invalid:p,$correct:$,$error:m,$pending:V,$ready:h,$edited:w,$anyEdited:O,$reset:S,$touch:T,$validate:E,$extractDirtyFields:D,$clearExternalErrors:c})}function Bt(e){function t(n){let r=vue.computed(()=>vue.toValue(n));d();let a=vue.ref(p(e.value)),o=vue.reactive({r$:a});function d(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}vue.watch(r,d),vue.watch(e,$=>{a.value=p($);},{deep:true});function p($){if(r.value){let m=$[r.value]??{};return je(m,true)}else return je($["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function qt(e,t){let n=t??He;return {useScopedRegle:(a,o,d)=>{let{namespace:p,...$}=d??{},m=vue.computed(()=>vue.toValue(p)),h=vue.ref(`${Object.keys(e.value).length+1}-${$e()}`),V=vue.computed(()=>`instance-${h.value}`),{r$:I}=n(a,o,$);w(),It(M),vue.watch(m,(O,l)=>{M(l),w();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let O=vue.getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&M();});function M(O){let l=O??m.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=I):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=I);}return {r$:I,dispose:M,register:w}}}}function ze(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Ct(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:r}=qt(n,e?.customUseRegle),{useCollectScope:a}=Bt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:ct,useScopedRegle:ft}=ze();
|
|
2
|
+
exports.InternalRuleType=Je;exports.createRule=Qe;exports.createScopedUseRegle=ze;exports.defineRegleConfig=Wt;exports.flatErrors=tt;exports.inferRules=ut;exports.mergeRegles=je;exports.unwrapRuleParameters=re;exports.useCollectScope=ct;exports.useRegle=He;exports.useRootStorage=Ie;exports.useScopedRegle=ft;
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ht=Symbol("regle-rule");function Jt(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 N(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>N(n)))),r=="Map"&&(t=new Map([...e].map(n=>[N(n[0]),N(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Jt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=N(e[n]);}return t}function W(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function qe(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 Ve(e,t,r){let n,a=(...o)=>new Promise(d=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(d);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}var Ke=(r=>(r.Inline="__inline",r.Async="__async",r))(Ke||{});function bt(e,t){return e.some(r=>r[t])}function Et(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function Tt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function xt(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(d=>d.trim()).filter(d=>d.length>0).length:0}function Je(e,...t){let{validator:r,type:n}=e,a=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(p,...$){return e.validator(p,...re($.length?$:t))},message(p){return typeof e.message=="function"?e.message({...p,$params:re(p?.$params?.length?p.$params:t)}):e.message},active(p){return typeof e.active=="function"?e.active({...p,$params:re(p?.$params?.length?p.$params:t)}):e.active??true},tooltip(p){return typeof e.tooltip=="function"?e.tooltip({...p,$params:re(p?.$params?.length?p.$params:t)}):e.tooltip??[]},exec(p){let $=e.validator(p,...re(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:a,_params:Tt(t),_brand:ht}}function Ye(e){if(typeof e.validator=="function"){let r=Je(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(xt(e.validator)>1){let a=function(...o){return Je(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}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),a=shallowRef(new Map),o=shallowRef(new Map);function d(S){let T=t.value.get(S);if(T)return T;{let D=ref({});return t.value.set(S,D),D}}function p(S){let T=r.value.get(S);if(T)return T;{let D=ref([]);return r.value.set(S,D),D}}function $(S,T,D){o.value.set(`${S}-${T}`,D);}function m(S,T){return o.value.get(`${S}-${T}`)}function h(S,T){S&&T!=null&&o.value.delete(`${S}-${T}`);}function V(S,T){n.value.set(S,T);}function C(S){return n.value.get(S)??false}function M(S,T){e.value.set(S,T);}function w(S,T){let D=e.value.get(S);return D?O(T,D)?{valid:true}:{valid:false}:void 0}function O(S,T){let D=Object.keys(T),c=Object.keys(S);return c.length!==D.length||!c.every(u=>D.includes(u))?false:c.every(u=>{let s=S[u],b=T[u];return !b||!s||typeof s=="function"||typeof b=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((A,B)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let G=re(b._params),X=re(s._params);return G?.[B]===X?.[B]}}):true})}function l(S){let T=a.value.get(S);if(T)return T;{let D=ref(false),c=ref(true),E=ref({}),u=ref(false);return a.value.set(S,{$pending:D,$valid:c,$metadata:E,$validating:u}),{$pending:D,$valid:c,$metadata:E,$validating:u}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:l,getFieldsEntry:d,getCollectionsEntry:p,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:o}}function _e(e){return W(e.value)}function Xe(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}function ar(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),d=Number(n[a]);if(o>d)return 1;if(d>o)return -1;if(!isNaN(o)&&isNaN(d))return 1;if(isNaN(o)&&!isNaN(d))return -1}return 0}var Ne=ar(version,"3.5.0")!==-1;function lr(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?lr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Dt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Ct(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function ke(e,t){return _e(e)||W(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function It(e,t,r=false){return !!e.value&&W(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(W)||Array.isArray(t.value)&&t.value.some(W)}function Ge(e){return !!e.value&&W(e.value)}function we(e){return W(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function Ot(e){return W(e)&&"$fields"in e}function wt(e){return !!e&&"$rules"in e}function Ze({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 Pt({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 At(e){return W(e)&&"$each"in e}function et(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!W(n)))return e;if(At(e)){let n=r?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>Ue(o,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>Ue(a,r,[n])).flat()}function Ue(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!W(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(At(e)){let a=n?.length?e.$self?.map(d=>({error:d,path:n.join(".")}))??[]:e.$self??[],o=e.$each?.map((d,p)=>Ue(d,t,n?.concat(p.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>Ue(o,t,n?.concat(a))).flat()}function Mt({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:o,$debounce:d,modifiers:p}){let $=effectScope(),m={},h,V=ref(false),{$pending:C,$valid:M,$metadata:w,$validating:O}=o.trySetRuleStatusRef(`${a}.${r}`);function l(){$=effectScope(),m=$.run(()=>{let s=ref(false),b=ref(false),A=ref(true),B=ref(false),G=ref(false),X=computed(()=>({$value:n.value,$error:b.value,$dirty:s.value,$pending:B.value,$correct:G.value,$invalid:A.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:C.value},$params:R.value,...w.value})),oe=computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function I(x){let j="",H=e?e[r]?.[x]:void 0;if(H&&(typeof H=="function"?j=H(X.value):j=H),Pe(t)){let g=`_${x}_patched`;H&&!t.value[g]||(typeof t.value[x]=="function"?j=t.value[x](X.value):j=t.value[x]??"");}return j}let q=computed(()=>{let x=I("message");return te(x)&&(x="This field is not valid"),x}),me=computed(()=>I("tooltip")),ue=computed(()=>Pe(t)&&t.value.type?t.value.type:r),i=computed(()=>Pe(t)?t.value.validator:t.value),R=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),f=computed(()=>`${a}.${ue.value}`);return {$active:oe,$message:q,$type:ue,$validator:i,$params:R,$path:f,$tooltip:me,$fieldCorrect:G,$fieldError:b,$fieldDirty:s,$fieldPending:B,$fieldInvalid:A}}),h=watch(m?.$params,()=>{(p.$autoDirty.value||p.$rewardEarly.value&&m.$fieldError.value)&&c();});}l();function S(){M.value=true,m.$fieldDirty.value&&(C.value=true);}async function T(){let s=false;try{let b=m.$validator.value;if(typeof b!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let A=b(n.value,...m.$params.value),B=n.value;S();let G;if(A instanceof Promise?G=await A:G=A,n.value!==B)return !0;if(typeof G=="boolean")s=G;else {let{$valid:X,...oe}=G;s=X,w.value=oe;}}catch{s=false;}finally{C.value=false;}return s}let D=Ve(T,d??200);async function c(){try{O.value=!0;let s=!1;if(we(t.value)&&t.value._async)s=await D();else {let b=m.$validator.value,A=b(n.value,...m.$params.value);if(A 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(A!=null)if(typeof A=="boolean")s=A;else {let{$valid:B,...G}=A;s=B,w.value=G;}}return M.value=s,s}catch{return false}finally{O.value=false;}}function E(){M.value=true,w.value={},C.value=false,O.value=false,l();}function u(){h(),$.stop(),$=effectScope();}return reactive({...m,$pending:C,$valid:M,$metadata:w,$haveAsync:V,$validating:O,$parse:c,$unwatch:u,$watch:l,$reset:E})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:d,externalErrors:p,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:V,initialState:C,shortcuts:M,onValidate:w}){let O=effectScope(),l,S=[],T,D,c,E,u,s=()=>{};function b(){let v=t.value,F=o.checkRuleDeclEntry(n,v);q.value=Object.fromEntries(Object.entries(v).filter(([y])=>y.startsWith("$"))),G(),I.value=Object.fromEntries(Object.entries(t.value).filter(([y])=>!y.startsWith("$")).map(([y,ee])=>{if(ee){let se=toRef(()=>ee);return [y,Mt({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:r,rule:se,ruleKey:y,state:e,path:n,storage:o,$debounce:q.value.$debounce})]}return []}).filter(y=>!!y.length)),l.processShortcuts(),A(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(n),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s()),o.addRuleDeclEntry(n,v);}function A(){s=l.$debounce.value?Ve(oe,l.$debounce.value??l.$haveAnyAsyncRule?100:0):oe;}function B(){I.value&&Object.entries(I.value).forEach(([v,F])=>{F.$unwatch();}),c(),u?.(),l.$dirty.value&&o.setDirtyEntry(n,l.$dirty.value),T?.(),D?.(),O.stop(),O=effectScope(),S.forEach(v=>v.stop()),S=[],h?.(),E?.();}function G(){I.value&&Object.entries(I.value).forEach(([v,F])=>{F.$watch();}),l=O.run(()=>{let v=ref(false),F=ref(false),y=computed(()=>v.value),ee=computed(()=>q.value.$debounce),se=computed(()=>q.value.$lazy!=null?q.value.$lazy:unref(d.lazy)!=null?unref(d.lazy):false),le=computed(()=>q.value.$rewardEarly!=null?q.value.$rewardEarly:unref(d.rewardEarly)!=null?unref(d.rewardEarly):false),U=computed(()=>q.value.$clearExternalErrorsOnChange!=null?q.value.$clearExternalErrorsOnChange:unref(d.clearExternalErrorsOnChange)!=null?unref(d.clearExternalErrorsOnChange):true),P=computed(()=>q.value.$autoDirty!=null?q.value.$autoDirty:unref(d.autoDirty)!=null?unref(d.autoDirty):!le.value),z=computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$validating)),Ie=computed({get:()=>e.value,set(ie){T(),e.value=ie,X();}}),je=computed(()=>ge.value&&!Oe.value&&v.value),ft=computed(()=>Ze({field:{$rules:I.value,$error:je.value,$externalErrors:p?.value,$schemaErrors:$?.value}})),Rt=computed(()=>Ze({field:{$rules:I.value,$error:je.value,$externalErrors:p?.value,$schemaErrors:$?.value},silent:true})),ze=computed(()=>v.value?C.value instanceof Date&&e.value instanceof Date?qe(C.value).getDate()!==qe(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),dt=computed(()=>ze.value),pt=computed(()=>Pt({field:{$rules:I.value}})),mt=computed(()=>P.value?y.value&&!(ge.value||Oe.value):!(ge.value||Oe.value)),Oe=computed(()=>F.value||!le.value?Object.entries(I.value).some(([ie,Q])=>Q.$pending):false),ge=computed(()=>p?.value?.length||$?.value?.length?true:Fe.value?false:!le.value||le.value&&F.value?Object.entries(I.value).some(([ie,Q])=>!Q.$valid):false),gt=computed(()=>a),Fe=computed(()=>!!(te(I.value)&&!m)),yt=computed(()=>p?.value?.length||Fe.value?false:v.value&&!te(e.value)&&!z.value?m?!$?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),qt=computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$haveAsync));function Kt(){M?.fields&&Object.entries(M.fields).forEach(([ie,Q])=>{let $t=effectScope();vt[ie]=$t.run(()=>{let St=ref();return watchEffect(()=>{St.value=Q(reactive({$dirty:v,$externalErrors:p?.value??[],$value:e,$silentValue:Ie,$rules:I,$error:je,$pending:Oe,$invalid:ge,$correct:yt,$errors:ft,$ready:mt,$silentErrors:Rt,$anyDirty:y,$tooltips:pt,$name:gt,$inactive:Fe,$edited:ze,$anyEdited:dt}));}),St}),S.push($t);});}let vt={};return watch(ge,ie=>{ie||(F.value=false);}),{$error:je,$pending:Oe,$invalid:ge,$correct:yt,$debounce:ee,$lazy:se,$errors:ft,$ready:mt,$silentErrors:Rt,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:U,$anyDirty:y,$edited:ze,$anyEdited:dt,$name:gt,$haveAnyAsyncRule:qt,$shortcuts:vt,$validating:z,$tooltips:pt,$dirty:v,triggerPunishment:F,processShortcuts:Kt,$silentValue:Ie,$inactive:Fe}}),X(),c=watch(l.$dirty,v=>{o.setDirtyEntry(n,v),Object.values(I.value).forEach(F=>{F.$fieldDirty=v;});}),u=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(I.value).forEach(v=>{v.$fieldError=l.$error.value,v.$fieldInvalid=l.$invalid.value,v.$fieldPending=l.$pending.value,v.$fieldCorrect=l.$correct.value;});}),D=watch(l.$invalid,v=>{l.$rewardEarly.value&&!v&&(l.triggerPunishment.value=false);}),E=watch(l.$haveAnyAsyncRule,A);}function X(){T=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&b(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:V?true:Ne?1:true});}function oe(){Object.values(I.value).forEach(v=>{v.$parse();});}let I=ref({}),q=ref({});b();function me(v,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(n,false),!F)if(v?.toInitialState)B(),e.value=N(C);else if(v?.toState){B();let y;typeof v?.toState=="function"?y=v?.toState():y=v?.toState,C.value=N(y),e.value=N(y);}else C.value=W(e.value)?N(e.value):Array.isArray(e.value)?[...e.value]:e.value;v?.clearExternalErrors&&f(),F||Object.entries(I.value).forEach(([y,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$parse()),F||b();}function ue(v=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&v?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s():v&&s();}async function i(){try{if(m)return w?(ue(!1),w()):{valid:!1,data:e.value};let v=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:v};return m?{valid:!$?.value?.length,data:v}:te(I.value)?{valid:!0,data:v}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:v}}catch{return {valid:false,data:e.value}}}function R(v=true){return l.$dirty.value?e.value:v?{_null:true}:null}function f(){p?.value?.length&&(p.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&s();let{$shortcuts:x,$validating:j,$autoDirty:H,$rewardEarly:g,$clearExternalErrorsOnChange:_,$haveAnyAsyncRule:K,$debounce:Z,$lazy:Y,triggerPunishment:fe,...ce}=l;return reactive({...ce,$externalErrors:p,$value:e,$rules:I,...x,$reset:me,$touch:ue,$validate:i,$unwatch:B,$watch:G,$extractDirtyFields:R,$clearExternalErrors:f})}function nt({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:d,rules:p,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:V,fieldName:C,schemaMode:M}){let w=p.$key?p.$key:$e(),O=`${t}.${String(w)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let l=toRef($?.value??[],r),S=computed(()=>m?.value?.[r]),T=Ee({state:o,rulesDef:toRef(()=>p),customMessages:d,path:O,storage:a,options:n,externalErrors:l,schemaErrors:S,initialState:h,shortcuts:V,fieldName:C,schemaMode:M});if(T){let D=o.value?.$id;T.$id=D??String(w),a.addArrayStatus(e,T.$id,T);}return T}function _t({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:d,schemaErrors:p,schemaMode:$,initialState:m,shortcuts:h,fieldName:V}){let C=effectScope(),M,w=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=ref(),T=ref(e.value),D,c=ref({}),E=a.getCollectionsEntry(n);O=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(R=>typeof R!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(R=>we(R)||typeof R=="function"):false)})),u(),A();function u(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=$e(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),T.value=c.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?E.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let{scope:f,unwrapped:x}=Xe(t.value.$each,toRef(()=>i),R);f&&l.push(f);let j=toRef(m.value??[],R),H=toRef(d?.value??{},"$each"),g=computed(()=>p?.value?.$each),_=nt({$id:S.value,path:n,customMessages:r,rules:x??{},stateValue:toRef(()=>i),index:R,options:o,storage:a,externalErrors:H,schemaErrors:g,initialState:j,shortcuts:h,fieldName:V,schemaMode:$});return _||null}).filter(i=>!!i):E.value=[],c.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:toRef(d?.value??{},"$self"),schemaErrors:computed(()=>p?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let i=N(E.value);E.value=e.value.filter(R=>typeof R=="object").map((R,f)=>{let x=toRef(()=>R);if(R.$id&&E.value.find(j=>j.$id===R.$id)){let j=a.getArrayStatus(S.value,R.$id);return j?(j.$value=x,j):null}else {let{scope:j,unwrapped:H}=Xe(t.value.$each,x,f);j&&l.push(j);let g=toRef(d?.value??{},"$each"),_=computed(()=>p?.value?.$each??[]),K=nt({$id:S.value,path:n,customMessages:r,rules:H??{},stateValue:x,index:f,options:o,storage:a,externalErrors:g,schemaErrors:_,initialState:toRef(m.value??[],f),shortcuts:h,fieldName:V,schemaMode:$});return K||null}}).filter(R=>!!R),i.filter(R=>!e.value?.find(f=>R.$id===f.$id)).forEach((R,f)=>{a.deleteArrayStatus(S.value,f.toString());});}else E.value=[];}function b(){D=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?u():s();},{deep:Ne?1:true,flush:"pre"});}function A(){b(),C=effectScope(),M=C.run(()=>{let i=computed({get:()=>e.value,set(y){D(),e.value=y,b();}}),R=computed(()=>c.value.$dirty&&(!E.value.length||E.value.every(y=>y.$dirty))),f=computed(()=>c.value.$anyDirty||E.value.some(y=>y.$anyDirty)),x=computed(()=>c.value.$invalid||E.value.some(y=>y.$invalid)),j=computed(()=>(te(c.value.$rules)?true:c.value.$correct)&&(!E.value.length||E.value.every(y=>y.$correct||y.$anyDirty&&!y.$invalid))),H=computed(()=>c.value.$error||E.value.some(y=>y.$error)),g=computed(()=>!(x.value||_.value)),_=computed(()=>c.value.$pending||E.value.some(y=>y.$pending)),K=computed(()=>!!E.value.length&&E.value.every(y=>y.$edited)),Z=computed(()=>c.value.$anyEdited||E.value.some(y=>y.$anyEdited)),Y=computed(()=>({$self:c.value.$errors,$each:E.value.map(y=>y.$errors)})),fe=computed(()=>({$self:c.value.$silentErrors,$each:E.value.map(y=>y.$silentErrors)})),ce=computed(()=>V);function v(){h?.collections&&Object.entries(h?.collections).forEach(([y,ee])=>{let se=effectScope();F[y]=se.run(()=>{let le=ref();return watchEffect(()=>{le.value=ee(reactive({$dirty:R,$error:H,$silentValue:i,$pending:_,$invalid:x,$correct:j,$errors:Y,$ready:g,$silentErrors:fe,$anyDirty:f,$name:ce,$each:E,$self:c,$value:e,$edited:K,$anyEdited:Z}));}),le}),l.push(se);});}let F={};return v(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:_,$errors:Y,$silentErrors:fe,$ready:g,$name:ce,$shortcuts:F,$silentValue:i,$edited:K,$anyEdited:Z}}),O.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 B(){D&&D(),c.value&&c.value.$unwatch(),E.value&&E.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),C.stop(),C=effectScope(),w.stop(),w=effectScope(true),l.forEach(i=>i.stop()),l=[];}function G(i=true,R=false){c.value.$touch(i,R),E.value.forEach(f=>{f.$touch(i,R);});}function X(i,R){if(B(),!R)if(i?.toInitialState)e.value=N(m.value);else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,m.value=N(f),e.value=N(f);}else m.value=N(e.value);i?.clearExternalErrors&&I(),c.value.$reset(),E.value.forEach(f=>{f.$reset(i,true);}),R||u();}async function oe(){let i=e.value;try{return {valid:(await Promise.allSettled([c.value.$validate(),...E.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}catch{return {valid:false,data:i}}}function I(){c.value.$clearExternalErrors(),E.value.forEach(i=>{i.$clearExternalErrors();});}function q(i=true){let R=E.value.map(f=>{if(Ot(f))return f.$extractDirtyFields(i)});return i&&R.every(f=>te(f))&&(R=[]),R}let{$shortcuts:me,...ue}=M;return reactive({$self:c,...ue,...me,$each:E,$value:e,$validate:oe,$unwatch:B,$watch:A,$touch:G,$reset:X,$extractDirtyFields:q,$clearExternalErrors:I})}function Le({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:o,rootSchemaErrors:d,validationGroups:p,initialState:$,fieldName:m,...h}){let V=effectScope(),C,M=[],w=null,O=null,l=null,S=null;async function D(i=true){let R=Object.entries(e.value),f=Object.fromEntries(R.filter(([g,_])=>!!_).map(([g,_])=>{if(_){let K=toRef(t.value??{},g),Z=toRef(()=>_),Y=toRef(a?.value??{},g),fe=computed(()=>o?.value?.[g]),ce=toRef($?.value??{},g);return [g,Ee({state:K,rulesDef:Z,path:r?`${r}.${g}`:g,externalErrors:Y,schemaErrors:fe,initialState:ce,fieldName:g,...h})]}return []})),x=Object.fromEntries(Object.entries(unref(a)??{}).filter(([g,_])=>!(g in e.value)&&!!_).map(([g])=>{let _=toRef(t.value??{},g),K=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef($?.value??{},g);return [g,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:g,...h})]})),j=Object.fromEntries(Object.entries(unref(o)??{}).map(([g])=>{let _=toRef(t.value??{},g),K=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef($?.value??{},g);return [g,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:g,...h})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(x??{}))&&!(g in(j??{}))).map(([g])=>{let _=toRef(t.value??{},g),K=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef($?.value??{},g);return [g,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:g,...h})]}));c.value={...f,...x,...j,...H},i&&s();}let c=h.storage.getFieldsEntry(r);D();function E(){a&&(l=watch(a,()=>{b(),D();},{deep:true}));}function u(){S=watch(t,()=>{b(),D(),G(true,true);},{flush:"sync"});}function s(){n&&(w?.(),w=watch(n,()=>{b(),D();},{deep:true,flush:"post"}),E()),d&&(O?.(),O=watch(d,()=>{b(),D();},{deep:true,flush:"post"})),u(),C=V.run(()=>{let i=computed({get:()=>t.value,set(U){b(),t.value=U,D();}}),R=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$dirty)),f=computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyDirty)),x=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$invalid)),j=computed(()=>{let U=Object.entries(c.value).filter(([P,z])=>wt(z)?!z.$inactive:true);return U.length?U.every(([P,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$error)),g=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),_=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!g.value),K=computed(()=>_.value?f.value&&!(x.value||Y.value):!(x.value||Y.value)),Z=ref(false),Y=computed(()=>Z.value||Object.entries(c.value).some(([U,P])=>P?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$silentErrors]))),v=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$edited)),F=computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyEdited)),y=computed(()=>m);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,P])=>{let z=effectScope();le[U]=z.run(()=>{let Ie=ref();return watchEffect(()=>{Ie.value=P(reactive({$dirty:R,$value:t,$silentValue:i,$error:H,$pending:Y,$invalid:x,$correct:j,$ready:K,$anyDirty:f,$name:y,$silentErrors:ce,$errors:fe,$fields:c,$edited:v,$anyEdited:F}));}),Ie}),M.push(z);});}let se=computed({get:()=>p?Object.fromEntries(Object.entries(p?.(c.value)??{}).map(([U,P])=>P.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,bt(P,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,Et(P,z)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:Y,$errors:fe,$silentErrors:ce,$ready:K,$name:y,$shortcuts:le,$groups:se,$silentValue:i,$edited:v,$anyEdited:F,$localPending:Z}});}function b(){w?.(),l?.(),S?.(),O?.(),M=[],C={},c.value&&Object.entries(c.value).forEach(([i,R])=>{R.$unwatch();});}function A(){Object.entries(c.value).forEach(([i,R])=>{R.$clearExternalErrors();});}function B(i,R){if(l?.(),b(),!R)if(i?.toInitialState)t.value=N({...$.value??{}});else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,$.value=N(f),t.value=N(f);}else $.value=N(t.value);Object.values(c.value).forEach(f=>{f.$reset(i,true);}),i?.clearExternalErrors&&A(),E(),R||D();}function G(i=true,R=false){Object.values(c.value).forEach(f=>{f.$touch(i,R);});}function X(i){return i.filter(([R,f])=>W(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function oe(i=true){let R=Object.entries(c.value).map(([f,x])=>[f,x.$extractDirtyFields(i)]);return i&&(R=X(R)),Object.fromEntries(R)}async function I(){try{if(h.schemaMode)return h.onValidate?(G(!1),C.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let i=t.value;return {valid:(await Promise.allSettled(Object.values(c.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:q,$localPending:me,...ue}=C;return reactive({...ue,...q,$fields:c,$value:t,$reset:B,$touch:G,$validate:I,$unwatch:b,$watch:s,$clearExternalErrors:A,$extractDirtyFields:oe})}function Ee({rulesDef:e,...t}){if(It(e,t.state,t.schemaMode))return _t({rulesDef:e,...t});if(ke(t.state,e)){if(_e(t.state))return Le({rulesDef:e,...t});{let n=effectScope().run(()=>{let d=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,p=>{d.value=p;},{deep:true}),watch(d,p=>{t.state.value=p;},{deep:true}),{fakeState:d}}),{state:a,...o}=t;return Le({rulesDef:e,...o,state:n.fakeState})}}else if(Ge(e))return be({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o,schemaErrors:d,schemaMode:p=false,onValidate:$}){let m=Qe(),h=ref();return ke(n,r)?h.value=Le({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:$}):Ge(r)&&(h.value=be({rulesDef:r,state:n,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:p,schemaErrors:d,onValidate:$})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function ot(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,d,p){let $=isRef(d)?d:computed(typeof d=="function"?d:()=>d),m={...n,...p},h=isRef(o)?o:ref(o),V=ref(W(h.value)?{...N(h.value)}:N(h.value));return {r$:Ce({scopeRules:$,state:h,options:m,initialState:V,customRules:e,shortcuts:r}).regle}}return a}var Be=ot();function st(){function e(t,r){return r}return e}var it=st();function Ut({rules:e,modifiers:t,shortcuts:r}){let n=ot(e,t,r),a=st();return {useRegle:n,inferRules:a}}function Me(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(u=>u.$value):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$value])),set:u=>{r||typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$value=b);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentValue])),set:u=>{typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$silentValue=b);}}),o=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$dirty)}),d=computed(()=>Object.entries(e).some(([u,s])=>s?.$anyDirty)),p=computed(()=>Object.entries(e).some(([u,s])=>s?.$invalid)),$=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),m=computed(()=>Object.entries(e).some(([u,s])=>s?.$error)),h=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$ready)}),V=computed(()=>Object.entries(e).some(([u,s])=>s?.$pending)),C=computed(()=>r?Object.entries(e).map(([u,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$errors]))),M=computed(()=>r?Object.entries(e).map(([u,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentErrors]))),w=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$edited)}),O=computed(()=>Object.entries(e).some(([u,s])=>s?.$anyEdited)),l=computed(()=>r?Object.values(e):e);function S(u){Object.values(e).forEach(s=>{s.$reset(u);});}function T(){Object.values(e).forEach(u=>{u.$touch();});}function D(u=true){return Object.values(e).map(s=>s.$extractDirtyFields(u))}function c(){Object.values(e).forEach(u=>{u.$clearExternalErrors();});}async function E(){try{let u=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(A=>A.$validate()))).every(A=>A.status==="fulfilled"?A.value.valid===!0:!1),data:u}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:C,$silentErrors:M,$instances:l,$value:n,$dirty:o,$anyDirty:d,$invalid:p,$correct:$,$error:m,$pending:V,$ready:h,$edited:w,$anyEdited:O,$reset:S,$touch:T,$validate:E,$extractDirtyFields:D,$clearExternalErrors:c})}function Lt(e){function t(r){let n=computed(()=>toValue(r));d();let a=ref(p(e.value)),o=reactive({r$:a});function d(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,d),watch(e,$=>{a.value=p($);},{deep:true});function p($){if(n.value){let m=$[n.value]??{};return Me(m,true)}else return Me($["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function zt(e,t){let r=t??Be;return {useScopedRegle:(a,o,d)=>{let{namespace:p,...$}=d??{},m=computed(()=>toValue(p)),h=ref(`${Object.keys(e.value).length+1}-${$e()}`),V=computed(()=>`instance-${h.value}`),{r$:C}=r(a,o,$);w(),Dt(M),watch(m,(O,l)=>{M(l),w();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&M();});function M(O){let l=O??m.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:M,register:w}}}}function He(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Ct(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=zt(r,e?.customUseRegle),{useCollectScope:a}=Lt(r);return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:ut,useScopedRegle:ct}=He();
|
|
2
|
-
export{
|
|
1
|
+
import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var bt=Symbol("regle-rule");function Yt(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 N(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>N(r)))),n=="Map"&&(t=new Map([...e].map(r=>[N(r[0]),N(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,Yt(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=N(e[r]);}return t}function W(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ke(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 _e(e,t,n){let r,a=(...o)=>new Promise(d=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(d);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Je={Inline:"__inline",Async:"__async"};function Et(e,t){return e.some(n=>n[t])}function Tt(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function xt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Dt(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(d=>d.trim()).filter(d=>d.length>0).length:0}function Ye(e,...t){let{validator:n,type:r}=e,a=r===Je.Async||n.constructor.name==="AsyncFunction";return {...{validator(p,...$){return e.validator(p,...re($.length?$:t))},message(p){return typeof e.message=="function"?e.message({...p,$params:re(p?.$params?.length?p.$params:t)}):e.message},active(p){return typeof e.active=="function"?e.active({...p,$params:re(p?.$params?.length?p.$params:t)}):e.active??true},tooltip(p){return typeof e.tooltip=="function"?e.tooltip({...p,$params:re(p?.$params?.length?p.$params:t)}):e.tooltip??[]},exec(p){let $=e.validator(p,...re(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:a,_params:xt(t),_brand:bt}}function Qe(e){if(typeof e.validator=="function"){let n=Ye(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(Dt(e.validator)>1){let a=function(...o){return Ye(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("Validator must be a function")}function Xe(){let e=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),r=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function d(S){let T=t.value.get(S);if(T)return T;{let D=ref({});return t.value.set(S,D),D}}function p(S){let T=n.value.get(S);if(T)return T;{let D=ref([]);return n.value.set(S,D),D}}function $(S,T,D){o.value.set(`${S}-${T}`,D);}function m(S,T){return o.value.get(`${S}-${T}`)}function h(S,T){S&&T!=null&&o.value.delete(`${S}-${T}`);}function V(S,T){r.value.set(S,T);}function I(S){return r.value.get(S)??false}function M(S,T){e.value.set(S,T);}function w(S,T){let D=e.value.get(S);return D?O(T,D)?{valid:true}:{valid:false}:void 0}function O(S,T){let D=Object.keys(T),c=Object.keys(S);return c.length!==D.length||!c.every(u=>D.includes(u))?false:c.every(u=>{let s=S[u],b=T[u];return !b||!s||typeof s=="function"||typeof b=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((A,B)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let G=re(b._params),X=re(s._params);return G?.[B]===X?.[B]}}):true})}function l(S){let T=a.value.get(S);if(T)return T;{let D=ref(false),c=ref(true),E=ref({}),u=ref(false);return a.value.set(S,{$pending:D,$valid:c,$metadata:E,$validating:u}),{$pending:D,$valid:c,$metadata:E,$validating:u}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:I,trySetRuleStatusRef:l,getFieldsEntry:d,getCollectionsEntry:p,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:o}}function Ne(e){return W(e.value)}function Ze(e,t,n){let r=effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var we={LessThan:-1,EqualTo:0,GreaterThan:1};function lr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),d=Number(r[a]);if(o>d)return we.GreaterThan;if(d>o)return we.LessThan;if(!isNaN(o)&&isNaN(d))return we.GreaterThan;if(isNaN(o)&&!isNaN(d))return we.LessThan}return we.EqualTo}var ke=lr(version,"3.5.0")!==-1;function or(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?or():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function It(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Ct(e){let t=false,n,r=effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||W(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>Pe(r)||typeof r=="function")}function Ot(e,t,n=false){return !!e.value&&W(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(W)||Array.isArray(t.value)&&t.value.some(W)}function Ue(e){return !!e.value&&W(e.value)}function Pe(e){return W(e)&&"_validator"in e}function Ae(e){return typeof e.value!="function"}function wt(e){return W(e)&&"$fields"in e}function Pt(e){return !!e&&"$rules"in e}function et({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function At({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function Mt(e){return W(e)&&"$each"in e}function tt(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!W(r)))return e;if(Mt(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!W(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(Mt(e)){let a=r?.length?e.$self?.map(d=>({error:d,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((d,p)=>We(d,t,r?.concat(p.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function jt({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:d,modifiers:p}){let $=effectScope(),m={},h,V=ref(false),{$pending:I,$valid:M,$metadata:w,$validating:O}=o.trySetRuleStatusRef(`${a}.${n}`);function l(){$=effectScope(),m=$.run(()=>{let s=ref(false),b=ref(false),A=ref(true),B=ref(false),G=ref(false),X=computed(()=>({$value:r.value,$error:b.value,$dirty:s.value,$pending:B.value,$correct:G.value,$invalid:A.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:I.value},$params:R.value,...w.value})),oe=computed(()=>Ae(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function C(x){let j="",H=e?e[n]?.[x]:void 0;if(H&&(typeof H=="function"?j=H(X.value):j=H),Ae(t)){let y=`_${x}_patched`;H&&!t.value[y]||(typeof t.value[x]=="function"?j=t.value[x](X.value):j=t.value[x]??"");}return j}let q=computed(()=>{let x=C("message");return te(x)&&(x="This field is not valid"),x}),me=computed(()=>C("tooltip")),ue=computed(()=>Ae(t)&&t.value.type?t.value.type:n),i=computed(()=>Ae(t)?t.value.validator:t.value),R=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),f=computed(()=>`${a}.${ue.value}`);return {$active:oe,$message:q,$type:ue,$validator:i,$params:R,$path:f,$tooltip:me,$fieldCorrect:G,$fieldError:b,$fieldDirty:s,$fieldPending:B,$fieldInvalid:A}}),h=watch(m?.$params,()=>{(p.$autoDirty.value||p.$rewardEarly.value&&m.$fieldError.value)&&c();});}l();function S(){M.value=true,m.$fieldDirty.value&&(I.value=true);}async function T(){let s=false;try{let b=m.$validator.value;if(typeof b!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let A=b(r.value,...m.$params.value),B=r.value;S();let G;if(A instanceof Promise?G=await A:G=A,r.value!==B)return !0;if(typeof G=="boolean")s=G;else {let{$valid:X,...oe}=G;s=X,w.value=oe;}}catch{s=false;}finally{I.value=false;}return s}let D=_e(T,d??200);async function c(){try{O.value=!0;let s=!1;if(Pe(t.value)&&t.value._async)s=await D();else {let b=m.$validator.value,A=b(r.value,...m.$params.value);if(A 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(A!=null)if(typeof A=="boolean")s=A;else {let{$valid:B,...G}=A;s=B,w.value=G;}}return M.value=s,s}catch{return false}finally{O.value=false;}}function E(){M.value=true,w.value={},I.value=false,O.value=false,l();}function u(){h(),$.stop(),$=effectScope();}return reactive({...m,$pending:I,$valid:M,$metadata:w,$haveAsync:V,$validating:O,$parse:c,$unwatch:u,$watch:l,$reset:E})}function be({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:d,externalErrors:p,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:V,initialState:I,shortcuts:M,onValidate:w}){let O=effectScope(),l,S=[],T,D,c,E,u,s=()=>{};function b(){let v=t.value,F=o.checkRuleDeclEntry(r,v);q.value=Object.fromEntries(Object.entries(v).filter(([g])=>g.startsWith("$"))),G(),C.value=Object.fromEntries(Object.entries(t.value).filter(([g])=>!g.startsWith("$")).map(([g,ee])=>{if(ee){let se=toRef(()=>ee);return [g,jt({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:g,state:e,path:r,storage:o,$debounce:q.value.$debounce})]}return []}).filter(g=>!!g.length)),l.processShortcuts(),A(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s()),o.addRuleDeclEntry(r,v);}function A(){s=l.$debounce.value?_e(oe,l.$debounce.value??l.$haveAnyAsyncRule?100:0):oe;}function B(){C.value&&Object.entries(C.value).forEach(([v,F])=>{F.$unwatch();}),c(),u?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),T?.(),D?.(),O.stop(),O=effectScope(),S.forEach(v=>v.stop()),S=[],h?.(),E?.();}function G(){C.value&&Object.entries(C.value).forEach(([v,F])=>{F.$watch();}),l=O.run(()=>{let v=ref(false),F=ref(false),g=computed(()=>v.value),ee=computed(()=>q.value.$debounce),se=computed(()=>q.value.$lazy!=null?q.value.$lazy:unref(d.lazy)!=null?unref(d.lazy):false),le=computed(()=>q.value.$rewardEarly!=null?q.value.$rewardEarly:unref(d.rewardEarly)!=null?unref(d.rewardEarly):false),U=computed(()=>q.value.$clearExternalErrorsOnChange!=null?q.value.$clearExternalErrorsOnChange:unref(d.clearExternalErrorsOnChange)!=null?unref(d.clearExternalErrorsOnChange):true),P=computed(()=>q.value.$autoDirty!=null?q.value.$autoDirty:unref(d.autoDirty)!=null?unref(d.autoDirty):!le.value),z=computed(()=>Object.entries(C.value).some(([ie,Q])=>Q.$validating)),Ce=computed({get:()=>e.value,set(ie){T(),e.value=ie,X();}}),Fe=computed(()=>ye.value&&!Oe.value&&v.value),Rt=computed(()=>et({field:{$rules:C.value,$error:Fe.value,$externalErrors:p?.value,$schemaErrors:$?.value}})),dt=computed(()=>et({field:{$rules:C.value,$error:Fe.value,$externalErrors:p?.value,$schemaErrors:$?.value},silent:true})),qe=computed(()=>v.value?I.value instanceof Date&&e.value instanceof Date?Ke(I.value).getDate()!==Ke(e.value).getDate():I.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(I.value)?e.value.length!==I.value.length:I.value!==e.value:false),pt=computed(()=>qe.value),mt=computed(()=>At({field:{$rules:C.value}})),yt=computed(()=>P.value?g.value&&!(ye.value||Oe.value):!(ye.value||Oe.value)),Oe=computed(()=>F.value||!le.value?Object.entries(C.value).some(([ie,Q])=>Q.$pending):false),ye=computed(()=>p?.value?.length||$?.value?.length?true:Ve.value?false:!le.value||le.value&&F.value?Object.entries(C.value).some(([ie,Q])=>!Q.$valid):false),gt=computed(()=>a),Ve=computed(()=>!!(te(C.value)&&!m)),vt=computed(()=>p?.value?.length||Ve.value?false:v.value&&!te(e.value)&&!z.value?m?!$?.value?.length:Object.values(C.value).some(Q=>Q.$active)?Object.values(C.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),Kt=computed(()=>Object.entries(C.value).some(([ie,Q])=>Q.$haveAsync));function Jt(){M?.fields&&Object.entries(M.fields).forEach(([ie,Q])=>{let St=effectScope();$t[ie]=St.run(()=>{let ht=ref();return watchEffect(()=>{ht.value=Q(reactive({$dirty:v,$externalErrors:p?.value??[],$value:e,$silentValue:Ce,$rules:C,$error:Fe,$pending:Oe,$invalid:ye,$correct:vt,$errors:Rt,$ready:yt,$silentErrors:dt,$anyDirty:g,$tooltips:mt,$name:gt,$inactive:Ve,$edited:qe,$anyEdited:pt}));}),ht}),S.push(St);});}let $t={};return watch(ye,ie=>{ie||(F.value=false);}),{$error:Fe,$pending:Oe,$invalid:ye,$correct:vt,$debounce:ee,$lazy:se,$errors:Rt,$ready:yt,$silentErrors:dt,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:U,$anyDirty:g,$edited:qe,$anyEdited:pt,$name:gt,$haveAnyAsyncRule:Kt,$shortcuts:$t,$validating:z,$tooltips:mt,$dirty:v,triggerPunishment:F,processShortcuts:Jt,$silentValue:Ce,$inactive:Ve}}),X(),c=watch(l.$dirty,v=>{o.setDirtyEntry(r,v),Object.values(C.value).forEach(F=>{F.$fieldDirty=v;});}),u=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(C.value).forEach(v=>{v.$fieldError=l.$error.value,v.$fieldInvalid=l.$invalid.value,v.$fieldPending=l.$pending.value,v.$fieldCorrect=l.$correct.value;});}),D=watch(l.$invalid,v=>{l.$rewardEarly.value&&!v&&(l.triggerPunishment.value=false);}),E=watch(l.$haveAnyAsyncRule,A);}function X(){T=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&b(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:V?true:ke?1:true});}function oe(){Object.values(C.value).forEach(v=>{v.$parse();});}let C=ref({}),q=ref({});b();function me(v,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!F)if(v?.toInitialState)B(),e.value=N(I);else if(v?.toState){B();let g;typeof v?.toState=="function"?g=v?.toState():g=v?.toState,I.value=N(g),e.value=N(g);}else I.value=W(e.value)?N(e.value):Array.isArray(e.value)?[...e.value]:e.value;v?.clearExternalErrors&&f(),F||Object.entries(C.value).forEach(([g,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$parse()),F||b();}function ue(v=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&v?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&s():v&&s();}async function i(){try{if(m)return w?(ue(!1),w()):{valid:!1,data:e.value};let v=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:v};return m?{valid:!$?.value?.length,data:v}:te(C.value)?{valid:!0,data:v}:{valid:(await Promise.allSettled(Object.entries(C.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:v}}catch{return {valid:false,data:e.value}}}function R(v=true){return l.$dirty.value?e.value:v?{_null:true}:null}function f(){p?.value?.length&&(p.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&s();let{$shortcuts:x,$validating:j,$autoDirty:H,$rewardEarly:y,$clearExternalErrorsOnChange:_,$haveAnyAsyncRule:K,$debounce:Z,$lazy:Y,triggerPunishment:fe,...ce}=l;return reactive({...ce,$externalErrors:p,$value:e,$rules:C,...x,$reset:me,$touch:ue,$validate:i,$unwatch:B,$watch:G,$extractDirtyFields:R,$clearExternalErrors:f})}function at({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:d,rules:p,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:V,fieldName:I,schemaMode:M}){let w=p.$key?p.$key:$e(),O=`${t}.${String(w)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let l=toRef($?.value??[],n),S=computed(()=>m?.value?.[n]),T=Ee({state:o,rulesDef:toRef(()=>p),customMessages:d,path:O,storage:a,options:r,externalErrors:l,schemaErrors:S,initialState:h,shortcuts:V,fieldName:I,schemaMode:M});if(T){let D=o.value?.$id;T.$id=D??String(w),a.addArrayStatus(e,T.$id,T);}return T}function Nt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:d,schemaErrors:p,schemaMode:$,initialState:m,shortcuts:h,fieldName:V}){let I=effectScope(),M,w=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=ref(),T=ref(e.value),D,c=ref({}),E=a.getCollectionsEntry(r);O=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(R=>typeof R!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(R=>Pe(R)||typeof R=="function"):false)})),u(),A();function u(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=$e(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),T.value=c.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?E.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let{scope:f,unwrapped:x}=Ze(t.value.$each,toRef(()=>i),R);f&&l.push(f);let j=toRef(m.value??[],R),H=toRef(d?.value??{},"$each"),y=computed(()=>p?.value?.$each),_=at({$id:S.value,path:r,customMessages:n,rules:x??{},stateValue:toRef(()=>i),index:R,options:o,storage:a,externalErrors:H,schemaErrors:y,initialState:j,shortcuts:h,fieldName:V,schemaMode:$});return _||null}).filter(i=>!!i):E.value=[],c.value=be({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:toRef(d?.value??{},"$self"),schemaErrors:computed(()=>p?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let i=N(E.value);E.value=e.value.filter(R=>typeof R=="object").map((R,f)=>{let x=toRef(()=>R);if(R.$id&&E.value.find(j=>j.$id===R.$id)){let j=a.getArrayStatus(S.value,R.$id);return j?(j.$value=x,j):null}else {let{scope:j,unwrapped:H}=Ze(t.value.$each,x,f);j&&l.push(j);let y=toRef(d?.value??{},"$each"),_=computed(()=>p?.value?.$each??[]),K=at({$id:S.value,path:r,customMessages:n,rules:H??{},stateValue:x,index:f,options:o,storage:a,externalErrors:y,schemaErrors:_,initialState:toRef(m.value??[],f),shortcuts:h,fieldName:V,schemaMode:$});return K||null}}).filter(R=>!!R),i.filter(R=>!e.value?.find(f=>R.$id===f.$id)).forEach((R,f)=>{a.deleteArrayStatus(S.value,f.toString());});}else E.value=[];}function b(){D=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?u():s();},{deep:ke?1:true,flush:"pre"});}function A(){b(),I=effectScope(),M=I.run(()=>{let i=computed({get:()=>e.value,set(g){D(),e.value=g,b();}}),R=computed(()=>c.value.$dirty&&(!E.value.length||E.value.every(g=>g.$dirty))),f=computed(()=>c.value.$anyDirty||E.value.some(g=>g.$anyDirty)),x=computed(()=>c.value.$invalid||E.value.some(g=>g.$invalid)),j=computed(()=>(te(c.value.$rules)?true:c.value.$correct)&&(!E.value.length||E.value.every(g=>g.$correct||g.$anyDirty&&!g.$invalid))),H=computed(()=>c.value.$error||E.value.some(g=>g.$error)),y=computed(()=>!(x.value||_.value)),_=computed(()=>c.value.$pending||E.value.some(g=>g.$pending)),K=computed(()=>!!E.value.length&&E.value.every(g=>g.$edited)),Z=computed(()=>c.value.$anyEdited||E.value.some(g=>g.$anyEdited)),Y=computed(()=>({$self:c.value.$errors,$each:E.value.map(g=>g.$errors)})),fe=computed(()=>({$self:c.value.$silentErrors,$each:E.value.map(g=>g.$silentErrors)})),ce=computed(()=>V);function v(){h?.collections&&Object.entries(h?.collections).forEach(([g,ee])=>{let se=effectScope();F[g]=se.run(()=>{let le=ref();return watchEffect(()=>{le.value=ee(reactive({$dirty:R,$error:H,$silentValue:i,$pending:_,$invalid:x,$correct:j,$errors:Y,$ready:y,$silentErrors:fe,$anyDirty:f,$name:ce,$each:E,$self:c,$value:e,$edited:K,$anyEdited:Z}));}),le}),l.push(se);});}let F={};return v(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:_,$errors:Y,$silentErrors:fe,$ready:y,$name:ce,$shortcuts:F,$silentValue:i,$edited:K,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function B(){D&&D(),c.value&&c.value.$unwatch(),E.value&&E.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),I.stop(),I=effectScope(),w.stop(),w=effectScope(true),l.forEach(i=>i.stop()),l=[];}function G(i=true,R=false){c.value.$touch(i,R),E.value.forEach(f=>{f.$touch(i,R);});}function X(i,R){if(B(),!R)if(i?.toInitialState)e.value=N(m.value);else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,m.value=N(f),e.value=N(f);}else m.value=N(e.value);i?.clearExternalErrors&&C(),c.value.$reset(),E.value.forEach(f=>{f.$reset(i,true);}),R||u();}async function oe(){let i=e.value;try{return {valid:(await Promise.allSettled([c.value.$validate(),...E.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}catch{return {valid:false,data:i}}}function C(){c.value.$clearExternalErrors(),E.value.forEach(i=>{i.$clearExternalErrors();});}function q(i=true){let R=E.value.map(f=>{if(wt(f))return f.$extractDirtyFields(i)});return i&&R.every(f=>te(f))&&(R=[]),R}let{$shortcuts:me,...ue}=M;return reactive({$self:c,...ue,...me,$each:E,$value:e,$validate:oe,$unwatch:B,$watch:A,$touch:G,$reset:X,$extractDirtyFields:q,$clearExternalErrors:C})}function Be({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:d,validationGroups:p,initialState:$,fieldName:m,...h}){let V=effectScope(),I,M=[],w=null,O=null,l=null,S=null;async function D(i=true){let R=Object.entries(e.value),f=Object.fromEntries(R.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=toRef(t.value??{},y),Z=toRef(()=>_),Y=toRef(a?.value??{},y),fe=computed(()=>o?.value?.[y]),ce=toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:n?`${n}.${y}`:y,externalErrors:Y,schemaErrors:fe,initialState:ce,fieldName:y,...h})]}return []})),x=Object.fromEntries(Object.entries(unref(a)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(a?.value??{},y),Z=computed(()=>o?.value?.[y]),Y=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:n?`${n}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...h})]})),j=Object.fromEntries(Object.entries(unref(o)??{}).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(a?.value??{},y),Z=computed(()=>o?.value?.[y]),Y=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:n?`${n}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...h})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(x??{}))&&!(y in(j??{}))).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(a?.value??{},y),Z=computed(()=>o?.value?.[y]),Y=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:n?`${n}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...h})]}));c.value={...f,...x,...j,...H},i&&s();}let c=h.storage.getFieldsEntry(n);D();function E(){a&&(l=watch(a,()=>{b(),D();},{deep:true}));}function u(){S=watch(t,()=>{b(),D(),G(true,true);},{flush:"sync"});}function s(){r&&(w?.(),w=watch(r,()=>{b(),D();},{deep:true,flush:"post"}),E()),d&&(O?.(),O=watch(d,()=>{b(),D();},{deep:true,flush:"post"})),u(),I=V.run(()=>{let i=computed({get:()=>t.value,set(U){b(),t.value=U,D();}}),R=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$dirty)),f=computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyDirty)),x=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$invalid)),j=computed(()=>{let U=Object.entries(c.value).filter(([P,z])=>Pt(z)?!z.$inactive:true);return U.length?U.every(([P,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).some(([U,P])=>P?.$error)),y=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),_=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!y.value),K=computed(()=>_.value?f.value&&!(x.value||Y.value):!(x.value||Y.value)),Z=ref(false),Y=computed(()=>Z.value||Object.entries(c.value).some(([U,P])=>P?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(c.value).map(([U,P])=>[U,P?.$silentErrors]))),v=computed(()=>!!Object.entries(c.value).length&&Object.entries(c.value).every(([U,P])=>P?.$edited)),F=computed(()=>Object.entries(c.value).some(([U,P])=>P?.$anyEdited)),g=computed(()=>m);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,P])=>{let z=effectScope();le[U]=z.run(()=>{let Ce=ref();return watchEffect(()=>{Ce.value=P(reactive({$dirty:R,$value:t,$silentValue:i,$error:H,$pending:Y,$invalid:x,$correct:j,$ready:K,$anyDirty:f,$name:g,$silentErrors:ce,$errors:fe,$fields:c,$edited:v,$anyEdited:F}));}),Ce}),M.push(z);});}let se=computed({get:()=>p?Object.fromEntries(Object.entries(p?.(c.value)??{}).map(([U,P])=>P.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,Et(P,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,Tt(P,z)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:R,$anyDirty:f,$invalid:x,$correct:j,$error:H,$pending:Y,$errors:fe,$silentErrors:ce,$ready:K,$name:g,$shortcuts:le,$groups:se,$silentValue:i,$edited:v,$anyEdited:F,$localPending:Z}});}function b(){w?.(),l?.(),S?.(),O?.(),M=[],I={},c.value&&Object.entries(c.value).forEach(([i,R])=>{R.$unwatch();});}function A(){Object.entries(c.value).forEach(([i,R])=>{R.$clearExternalErrors();});}function B(i,R){if(l?.(),b(),!R)if(i?.toInitialState)t.value=N({...$.value??{}});else if(i?.toState){let f;typeof i?.toState=="function"?f=i?.toState():f=i?.toState,$.value=N(f),t.value=N(f);}else $.value=N(t.value);Object.values(c.value).forEach(f=>{f.$reset(i,true);}),i?.clearExternalErrors&&A(),E(),R||D();}function G(i=true,R=false){Object.values(c.value).forEach(f=>{f.$touch(i,R);});}function X(i){return i.filter(([R,f])=>W(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function oe(i=true){let R=Object.entries(c.value).map(([f,x])=>[f,x.$extractDirtyFields(i)]);return i&&(R=X(R)),Object.fromEntries(R)}async function C(){try{if(h.schemaMode)return h.onValidate?(G(!1),I.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let i=t.value;return {valid:(await Promise.allSettled(Object.values(c.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}}catch{return {valid:false,data:t.value}}finally{I.$localPending.value=false;}}let{$shortcuts:q,$localPending:me,...ue}=I;return reactive({...ue,...q,$fields:c,$value:t,$reset:B,$touch:G,$validate:C,$unwatch:b,$watch:s,$clearExternalErrors:A,$extractDirtyFields:oe})}function Ee({rulesDef:e,...t}){if(Ot(e,t.state,t.schemaMode))return Nt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Be({rulesDef:e,...t});{let r=effectScope().run(()=>{let d=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,p=>{d.value=p;},{deep:true}),watch(d,p=>{t.state.value=p;},{deep:true}),{fakeState:d}}),{state:a,...o}=t;return Be({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return be({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:d,schemaMode:p=false,onValidate:$}){let m=Xe(),h=ref();return Ge(r,n)?h.value=Be({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:$}):Ue(n)&&(h.value=be({rulesDef:n,state:r,customMessages:a?.(),storage:m,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:p,schemaErrors:d,onValidate:$})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function st(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,d,p){let $=isRef(d)?d:computed(typeof d=="function"?d:()=>d),m={...r,...p},h=isRef(o)?o:ref(o),V=ref(W(h.value)?{...N(h.value)}:N(h.value));return {r$:Ie({scopeRules:$,state:h,options:m,initialState:V,customRules:e,shortcuts:n}).regle}}return a}var He=st();function it(){function e(t,n){return n}return e}var ut=it();function Wt({rules:e,modifiers:t,shortcuts:n}){let r=st(e,t,n),a=it();return {useRegle:r,inferRules:a}}function je(e,t){let n=t??false,r=computed({get:()=>n?Object.values(e).map(u=>u.$value):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$value])),set:u=>{n||typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$value=b);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentValue])),set:u=>{typeof u=="object"&&Object.entries(u).forEach(([s,b])=>e[s].$silentValue=b);}}),o=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$dirty)}),d=computed(()=>Object.entries(e).some(([u,s])=>s?.$anyDirty)),p=computed(()=>Object.entries(e).some(([u,s])=>s?.$invalid)),$=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),m=computed(()=>Object.entries(e).some(([u,s])=>s?.$error)),h=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$ready)}),V=computed(()=>Object.entries(e).some(([u,s])=>s?.$pending)),I=computed(()=>n?Object.entries(e).map(([u,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$errors]))),M=computed(()=>n?Object.entries(e).map(([u,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([u,s])=>[u,s.$silentErrors]))),w=computed(()=>{let u=Object.entries(e);return !!u.length&&u.every(([s,b])=>b?.$edited)}),O=computed(()=>Object.entries(e).some(([u,s])=>s?.$anyEdited)),l=computed(()=>n?Object.values(e):e);function S(u){Object.values(e).forEach(s=>{s.$reset(u);});}function T(){Object.values(e).forEach(u=>{u.$touch();});}function D(u=true){return Object.values(e).map(s=>s.$extractDirtyFields(u))}function c(){Object.values(e).forEach(u=>{u.$clearExternalErrors();});}async function E(){try{let u=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(A=>A.$validate()))).every(A=>A.status==="fulfilled"?A.value.valid===!0:!1),data:u}}catch{return {valid:false,data:r.value}}}return reactive({...!n&&{$silentValue:a},$errors:I,$silentErrors:M,$instances:l,$value:r,$dirty:o,$anyDirty:d,$invalid:p,$correct:$,$error:m,$pending:V,$ready:h,$edited:w,$anyEdited:O,$reset:S,$touch:T,$validate:E,$extractDirtyFields:D,$clearExternalErrors:c})}function Bt(e){function t(n){let r=computed(()=>toValue(n));d();let a=ref(p(e.value)),o=reactive({r$:a});function d(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}watch(r,d),watch(e,$=>{a.value=p($);},{deep:true});function p($){if(r.value){let m=$[r.value]??{};return je(m,true)}else return je($["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function qt(e,t){let n=t??He;return {useScopedRegle:(a,o,d)=>{let{namespace:p,...$}=d??{},m=computed(()=>toValue(p)),h=ref(`${Object.keys(e.value).length+1}-${$e()}`),V=computed(()=>`instance-${h.value}`),{r$:I}=n(a,o,$);w(),It(M),watch(m,(O,l)=>{M(l),w();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&M();});function M(O){let l=O??m.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=I):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=I);}return {r$:I,dispose:M,register:w}}}}function ze(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Ct(()=>ref({"~~global":{}})))(),{useScopedRegle:r}=qt(n,e?.customUseRegle),{useCollectScope:a}=Bt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:ct,useScopedRegle:ft}=ze();
|
|
2
|
+
export{Je as InternalRuleType,Qe as createRule,ze as createScopedUseRegle,Wt as defineRegleConfig,tt as flatErrors,ut as inferRules,je as mergeRegles,re as unwrapRuleParameters,ct as useCollectScope,He as useRegle,Ie as useRootStorage,ft as useScopedRegle};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -105,11 +105,10 @@ function debounce(func, wait, immediate) {
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
// src/types/rules/rule.internal.types.ts
|
|
108
|
-
var InternalRuleType =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
})(InternalRuleType || {});
|
|
108
|
+
var InternalRuleType = {
|
|
109
|
+
Inline: "__inline",
|
|
110
|
+
Async: "__async"
|
|
111
|
+
};
|
|
113
112
|
function mergeBooleanGroupProperties(entries, property) {
|
|
114
113
|
return entries.some((entry) => {
|
|
115
114
|
return entry[property];
|
|
@@ -153,7 +152,7 @@ function getFunctionParametersLength(func) {
|
|
|
153
152
|
// src/core/createRule/defineRuleProcessors.ts
|
|
154
153
|
function defineRuleProcessors(definition, ...params) {
|
|
155
154
|
const { validator, type } = definition;
|
|
156
|
-
const isAsync = type ===
|
|
155
|
+
const isAsync = type === InternalRuleType.Async || validator.constructor.name === "AsyncFunction";
|
|
157
156
|
const defaultProcessors = {
|
|
158
157
|
validator(value, ...args) {
|
|
159
158
|
return definition.validator(value, ...unwrapRuleParameters(args.length ? args : params));
|
|
@@ -393,18 +392,23 @@ function unwrapGetter(getter, value, index) {
|
|
|
393
392
|
}
|
|
394
393
|
return { scope, unwrapped };
|
|
395
394
|
}
|
|
395
|
+
var VersionIs = {
|
|
396
|
+
LessThan: -1,
|
|
397
|
+
EqualTo: 0,
|
|
398
|
+
GreaterThan: 1
|
|
399
|
+
};
|
|
396
400
|
function versionCompare(current, other) {
|
|
397
401
|
const cp = String(current).split(".");
|
|
398
402
|
const op = String(other).split(".");
|
|
399
403
|
for (let depth = 0; depth < Math.min(cp.length, op.length); depth++) {
|
|
400
404
|
const cn = Number(cp[depth]);
|
|
401
405
|
const on = Number(op[depth]);
|
|
402
|
-
if (cn > on) return
|
|
403
|
-
if (on > cn) return
|
|
404
|
-
if (!isNaN(cn) && isNaN(on)) return
|
|
405
|
-
if (isNaN(cn) && !isNaN(on)) return
|
|
406
|
+
if (cn > on) return VersionIs.GreaterThan;
|
|
407
|
+
if (on > cn) return VersionIs.LessThan;
|
|
408
|
+
if (!isNaN(cn) && isNaN(on)) return VersionIs.GreaterThan;
|
|
409
|
+
if (isNaN(cn) && !isNaN(on)) return VersionIs.LessThan;
|
|
406
410
|
}
|
|
407
|
-
return
|
|
411
|
+
return VersionIs.EqualTo;
|
|
408
412
|
}
|
|
409
413
|
var isVueSuperiorOrEqualTo3dotFive = versionCompare(version, "3.5.0") === -1 ? false : true;
|
|
410
414
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Headless form validation library for Vue 3",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"pinia": ">=2.2.5",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"prettier": "3.3.3",
|
|
28
28
|
"tsup": "8.4.0",
|
|
29
29
|
"type-fest": "4.38.0",
|
|
30
|
-
"typescript": "5.
|
|
30
|
+
"typescript": "5.8.2",
|
|
31
31
|
"vitest": "3.0.9",
|
|
32
32
|
"vue": "3.5.13",
|
|
33
33
|
"vue-eslint-parser": "9.4.3",
|