@regle/core 1.5.3 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +11 -10
- package/dist/regle-core.js +79 -11
- package/dist/regle-core.min.js +1 -1
- package/package.json +12 -12
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as vue0 from "vue";
|
|
2
2
|
import { MaybeRef, MaybeRefOrGetter, Raw, Ref, UnwrapNestedRefs, UnwrapRef } from "vue";
|
|
3
3
|
|
|
4
4
|
//#region src/types/utils/misc.types.d.ts
|
|
@@ -1176,7 +1176,7 @@ interface RegleBehaviourOptions {
|
|
|
1176
1176
|
clearExternalErrorsOnChange?: boolean | undefined;
|
|
1177
1177
|
}
|
|
1178
1178
|
interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<TState, CustomRulesDeclarationTree>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}> {
|
|
1179
|
-
externalErrors?: Ref<RegleExternalErrorTree<Unwrap<TState
|
|
1179
|
+
externalErrors?: Ref<RegleExternalErrorTree<Unwrap<TState>> | Record<string, string[]>>;
|
|
1180
1180
|
validationGroups?: (fields: RegleStatus<TState, TRules>['$fields']) => TValidationGroups;
|
|
1181
1181
|
}
|
|
1182
1182
|
type RegleValidationGroupEntry = RegleFieldStatus<any, any>;
|
|
@@ -1317,7 +1317,7 @@ type SafeProperty<TState, TRule extends RegleFormPropertyType<any, any> | undefi
|
|
|
1317
1317
|
type IsPropertyOutputRequired<TState, TRule extends RegleFormPropertyType<any, any> | undefined> = [unknown] extends [TState] ? unknown : NonNullable<TState> extends Array<any> ? TRule extends RegleCollectionRuleDecl<any, any> ? ArrayHaveAtLeastOneRequiredField<NonNullable<TState>, TRule> extends false ? false : true : false : TRule extends ReglePartialRuleTree<any, any> ? ExtendOnlyRealRecord<TState> extends true ? ObjectHaveAtLeastOneRequiredField<NonNullable<TState> extends Record<string, any> ? NonNullable<TState> : {}, TRule> extends false ? false : true : TRule extends RegleRuleDecl<any, any> ? FieldHaveRequiredRule<TRule> extends false ? false : true : false : false;
|
|
1318
1318
|
type SafeFieldProperty<TState, TRule extends RegleFormPropertyType<any, any> | undefined = never> = FieldHaveRequiredRule<TRule> extends true ? NonNullable<TState> : MaybeOutput<TState>;
|
|
1319
1319
|
//#endregion
|
|
1320
|
-
//#region ../../node_modules/.pnpm/expect-type@1.2.
|
|
1320
|
+
//#region ../../node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/utils.d.ts
|
|
1321
1321
|
/**
|
|
1322
1322
|
* Negates a boolean type.
|
|
1323
1323
|
*/
|
|
@@ -1456,7 +1456,7 @@ type IsUnion<T> = Not<Extends<UnionToTuple$1<T>['length'], 1>>;
|
|
|
1456
1456
|
* ```
|
|
1457
1457
|
*/
|
|
1458
1458
|
//#endregion
|
|
1459
|
-
//#region ../../node_modules/.pnpm/expect-type@1.2.
|
|
1459
|
+
//#region ../../node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/overloads.d.ts
|
|
1460
1460
|
/**
|
|
1461
1461
|
* The simple(ish) way to get overload info from a function
|
|
1462
1462
|
* {@linkcode FunctionType}. Recent versions of TypeScript will match any
|
|
@@ -1723,7 +1723,7 @@ type ConstructorOverloadParameters<ConstructorType> = ConstructorOverloadsUnion<
|
|
|
1723
1723
|
*/
|
|
1724
1724
|
type NumOverloads<FunctionType> = UnionToTuple$1<OverloadsInfoUnion<FunctionType>>['length'];
|
|
1725
1725
|
//#endregion
|
|
1726
|
-
//#region ../../node_modules/.pnpm/expect-type@1.2.
|
|
1726
|
+
//#region ../../node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/branding.d.ts
|
|
1727
1727
|
/**
|
|
1728
1728
|
* Represents a deeply branded type.
|
|
1729
1729
|
*
|
|
@@ -1778,7 +1778,7 @@ type DeepBrand<T> = IsNever<T> extends true ? {
|
|
|
1778
1778
|
*/
|
|
1779
1779
|
type StrictEqualUsingBranding<Left, Right> = MutuallyExtends<DeepBrand<Left>, DeepBrand<Right>>;
|
|
1780
1780
|
//#endregion
|
|
1781
|
-
//#region ../../node_modules/.pnpm/expect-type@1.2.
|
|
1781
|
+
//#region ../../node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/messages.d.ts
|
|
1782
1782
|
/**
|
|
1783
1783
|
* Determines the printable type representation for a given type.
|
|
1784
1784
|
*/
|
|
@@ -1966,7 +1966,8 @@ type EnumLike = {
|
|
|
1966
1966
|
type enumType<T extends Record<string, unknown>> = T[keyof T];
|
|
1967
1967
|
type UnwrapMaybeRef<T extends MaybeRef<any> | DeepReactiveState<any>> = T extends Ref<any> ? UnwrapRef<T> : UnwrapNestedRefs<T>;
|
|
1968
1968
|
type TupleToPlainObj<T> = { [I in keyof T & `${number}`]: T[I] };
|
|
1969
|
-
type HasNamedKeys<T> =
|
|
1969
|
+
type HasNamedKeys<T> = IsUnion<T> extends true ? ProcessHasNamedKeys<LazyJoinDiscriminatedUnions<T>> : ProcessHasNamedKeys<T>;
|
|
1970
|
+
type ProcessHasNamedKeys<T> = { [K in keyof NonNullable<T>]: K extends string ? (string extends K ? never : K) : never }[keyof NonNullable<T>] extends never ? false : true;
|
|
1970
1971
|
//#endregion
|
|
1971
1972
|
//#region src/types/utils/mismatch.types.d.ts
|
|
1972
1973
|
type isDeepExact<TRules, TTree> = { [K in keyof TRules]-?: CheckDeepExact<NonNullable<TRules[K]>, K extends keyof JoinDiscriminatedUnions<TTree> ? NonNullable<JoinDiscriminatedUnions<TTree>[K]> : never> }[keyof TRules] extends true ? true : false;
|
|
@@ -2856,13 +2857,13 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
|
|
|
2856
2857
|
useScopedRegle: TReturnedRegle;
|
|
2857
2858
|
useCollectScope: useCollectScopeFn<TAsRecord>;
|
|
2858
2859
|
};
|
|
2859
|
-
declare const useCollectScope: <TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?:
|
|
2860
|
+
declare const useCollectScope: <TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: vue0.MaybeRefOrGetter<string>) => {
|
|
2860
2861
|
r$: MergedScopedRegles<TValue>;
|
|
2861
2862
|
}, useScopedRegle: useRegleFn<Partial<AllRulesDeclarations>, never, {
|
|
2862
2863
|
dispose: () => void;
|
|
2863
2864
|
register: () => void;
|
|
2864
2865
|
}, {
|
|
2865
|
-
namespace?:
|
|
2866
|
+
namespace?: vue0.MaybeRefOrGetter<string>;
|
|
2866
2867
|
}>;
|
|
2867
2868
|
//#endregion
|
|
2868
2869
|
//#region src/core/createVariant.d.ts
|
|
@@ -2942,4 +2943,4 @@ declare function defineRules<TRules extends RegleUnknownRulesTree>(rules: TRules
|
|
|
2942
2943
|
*/
|
|
2943
2944
|
declare function refineRules<TRules extends RegleUnknownRulesTree, TRefinement extends ReglePartialRuleTree<InferInput<TRules>> & RegleUnknownRulesTree>(rules: TRules, refinement: (state: Ref<InferInput<TRules>>) => TRefinement): (state: Ref<InferInput<TRules>>) => Merge<TRules, TRefinement>;
|
|
2944
2945
|
//#endregion
|
|
2945
|
-
export { $InternalRegleStatus, AllRulesDeclarations, CommonAlphaOptions, CommonComparisonOptions, CreateScopedUseRegleOptions, DeepMaybeRef, DeepReactiveState, DefaultValidatorsTree, FormRuleDeclaration, HasNamedKeys, HaveAnyRequiredProps, InferInput, InferRegleRoot, InferRegleRule, InferRegleRules, InferRegleShortcuts, InferRegleStatusType, InferSafeOutput, InlineRuleDeclaration, InternalRuleType, JoinDiscriminatedUnions, LocalRegleBehaviourOptions, Maybe, MaybeInput, MaybeOutput, MaybeReadonly, MaybeVariantStatus, MergedRegles, MergedScopedRegles, NarrowVariant, NoInferLegacy, PrimitiveTypes, Regle, RegleBehaviourOptions, RegleCollectionErrors, RegleCollectionRuleDecl, RegleCollectionRuleDefinition, RegleCollectionStatus, RegleCommonStatus, RegleComputedRules, RegleCustomFieldStatus, RegleEnforceCustomRequiredRules, RegleEnforceRequiredRules, RegleErrorTree, RegleExternalCollectionErrors, RegleExternalErrorTree, RegleExternalSchemaErrorTree, RegleFieldIssue, RegleFieldStatus, RegleFormPropertyType, RegleInternalRuleDefs, RegleIssuesTree, ReglePartialRuleTree, RegleResult, RegleRoot, RegleRuleCore, RegleRuleDecl, RegleRuleDefinition, RegleRuleDefinitionProcessor, RegleRuleDefinitionWithMetadataProcessor, RegleRuleInit, RegleRuleMetadataConsumer, RegleRuleMetadataDefinition, RegleRuleMetadataExtended, RegleRuleRaw, RegleRuleStatus, RegleRuleTypeReturn, RegleRuleWithParamsDefinition, RegleShortcutDefinition, RegleSingleField, RegleStatus, RegleUniversalParams, RegleUnknownRulesTree, RegleValidationErrors, RegleValidationGroupEntry, RegleValidationGroupOutput, RegleRuleTree as RegleValidationTree, ResolvedRegleBehaviourOptions, ScopedInstancesRecord, ScopedInstancesRecordLike, SuperCompatibleRegle, SuperCompatibleRegleCollectionErrors, SuperCompatibleRegleCollectionStatus, SuperCompatibleRegleFieldStatus, SuperCompatibleRegleResult, SuperCompatibleRegleRoot, SuperCompatibleRegleRuleStatus, SuperCompatibleRegleStatus, Unwrap, UnwrapRegleUniversalParams, UnwrapRuleWithParams, UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useCollectScopeFn, useRegle, useRegleFn, useRootStorage, useScopedRegle, variantToRef };
|
|
2946
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type 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 RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useScopedRegle, variantToRef };
|
package/dist/regle-core.js
CHANGED
|
@@ -81,6 +81,53 @@ function merge(obj1, ...objs) {
|
|
|
81
81
|
}
|
|
82
82
|
return result;
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Converts an object with dot-path keys into a nested object structure.
|
|
86
|
+
* Example:
|
|
87
|
+
* {
|
|
88
|
+
* "user.email": "foo",
|
|
89
|
+
* "password": "bar",
|
|
90
|
+
* "collection.0.name": "hello"
|
|
91
|
+
* }
|
|
92
|
+
* becomes:
|
|
93
|
+
* {
|
|
94
|
+
* user: { email: "foo" },
|
|
95
|
+
* password: "bar",
|
|
96
|
+
* collection: [{ name: "hello" }]
|
|
97
|
+
* }
|
|
98
|
+
*/
|
|
99
|
+
function dotPathObjectToNested(obj) {
|
|
100
|
+
const result = {};
|
|
101
|
+
for (const key in obj) {
|
|
102
|
+
if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
|
|
103
|
+
const value = obj[key];
|
|
104
|
+
const path = key.split(".");
|
|
105
|
+
let current = result;
|
|
106
|
+
for (let i = 0; i < path.length; i++) {
|
|
107
|
+
const part = path[i];
|
|
108
|
+
const isLast = i === path.length - 1;
|
|
109
|
+
const arrayIndex = part.match(/^\d+$/) ? Number(part) : null;
|
|
110
|
+
if (arrayIndex !== null) {
|
|
111
|
+
if (Array.isArray(current)) if (isLast) current[arrayIndex] = value;
|
|
112
|
+
else {
|
|
113
|
+
if (typeof current[arrayIndex] !== "object" || current[arrayIndex] === null) {
|
|
114
|
+
const nextPart = path[i + 1];
|
|
115
|
+
current[arrayIndex] = nextPart && nextPart.match(/^\d+$/) ? { $each: [] } : {};
|
|
116
|
+
}
|
|
117
|
+
current = "$each" in current[arrayIndex] ? current[arrayIndex].$each : current[arrayIndex];
|
|
118
|
+
}
|
|
119
|
+
} else if (isLast) current[part] = value;
|
|
120
|
+
else {
|
|
121
|
+
if (typeof current[part] !== "object" || current[part] === null || Array.isArray(current[part]) && !path[i + 1].match(/^\d+$/)) {
|
|
122
|
+
const nextPart = path[i + 1];
|
|
123
|
+
current[part] = nextPart && nextPart.match(/^\d+$/) ? { $each: [] } : {};
|
|
124
|
+
}
|
|
125
|
+
current = "$each" in current[part] ? current[part].$each : current[part];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
84
131
|
|
|
85
132
|
//#endregion
|
|
86
133
|
//#region ../shared/utils/toDate.ts
|
|
@@ -553,13 +600,13 @@ function createGlobalState(stateFactory) {
|
|
|
553
600
|
let initialized = false;
|
|
554
601
|
let state;
|
|
555
602
|
const scope = effectScope(true);
|
|
556
|
-
return (...args) => {
|
|
603
|
+
return ((...args) => {
|
|
557
604
|
if (!initialized) {
|
|
558
605
|
state = scope.run(() => stateFactory(...args));
|
|
559
606
|
initialized = true;
|
|
560
607
|
}
|
|
561
608
|
return state;
|
|
562
|
-
};
|
|
609
|
+
});
|
|
563
610
|
}
|
|
564
611
|
|
|
565
612
|
//#endregion
|
|
@@ -1015,7 +1062,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1015
1062
|
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
1016
1063
|
});
|
|
1017
1064
|
const $pending = computed(() => {
|
|
1018
|
-
if (triggerPunishment.value || !$rewardEarly$1.value) return Object.entries($rules.value).some(([
|
|
1065
|
+
if (triggerPunishment.value || !$rewardEarly$1.value) return Object.entries($rules.value).some(([_, ruleResult]) => {
|
|
1019
1066
|
return ruleResult.$pending;
|
|
1020
1067
|
});
|
|
1021
1068
|
return false;
|
|
@@ -1023,8 +1070,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1023
1070
|
const $invalid = computed(() => {
|
|
1024
1071
|
if (externalErrors?.value?.length || schemaErrors?.value?.length) return true;
|
|
1025
1072
|
else if ($inactive.value) return false;
|
|
1026
|
-
else
|
|
1027
|
-
return false;
|
|
1073
|
+
else return Object.values($rules.value).some((ruleResult) => !ruleResult.$valid || ruleResult.$maybePending);
|
|
1028
1074
|
});
|
|
1029
1075
|
const $name = computed(() => fieldName);
|
|
1030
1076
|
const $inactive = computed(() => {
|
|
@@ -1201,7 +1247,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1201
1247
|
valid: validationResults,
|
|
1202
1248
|
data
|
|
1203
1249
|
};
|
|
1204
|
-
} catch
|
|
1250
|
+
} catch {
|
|
1205
1251
|
return {
|
|
1206
1252
|
valid: false,
|
|
1207
1253
|
data: state.value
|
|
@@ -2121,6 +2167,28 @@ function createReactiveChildrenStatus({ rulesDef,...properties }) {
|
|
|
2121
2167
|
function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode = false, onValidate }) {
|
|
2122
2168
|
const storage = useStorage();
|
|
2123
2169
|
const regle = ref();
|
|
2170
|
+
const computedExternalErrors = ref();
|
|
2171
|
+
let $unwatchExternalErrors;
|
|
2172
|
+
let $unwatchComputedExternalErrors;
|
|
2173
|
+
function defineExternalErrorsWatchSource() {
|
|
2174
|
+
$unwatchExternalErrors = watch(() => options.externalErrors?.value, () => {
|
|
2175
|
+
$unwatchComputedExternalErrors?.();
|
|
2176
|
+
if (options.externalErrors?.value && Object.keys(options.externalErrors.value).some((key) => key.includes("."))) computedExternalErrors.value = dotPathObjectToNested(options.externalErrors.value);
|
|
2177
|
+
else computedExternalErrors.value = options.externalErrors?.value;
|
|
2178
|
+
defineComputedExternalErrorsWatchSource();
|
|
2179
|
+
}, {
|
|
2180
|
+
immediate: true,
|
|
2181
|
+
deep: true
|
|
2182
|
+
});
|
|
2183
|
+
}
|
|
2184
|
+
function defineComputedExternalErrorsWatchSource() {
|
|
2185
|
+
$unwatchComputedExternalErrors = watch(() => computedExternalErrors.value, () => {
|
|
2186
|
+
$unwatchExternalErrors?.();
|
|
2187
|
+
if (options.externalErrors?.value) options.externalErrors.value = computedExternalErrors.value;
|
|
2188
|
+
defineExternalErrorsWatchSource();
|
|
2189
|
+
}, { deep: true });
|
|
2190
|
+
}
|
|
2191
|
+
defineExternalErrorsWatchSource();
|
|
2124
2192
|
if (isNestedRulesDef(state, scopeRules)) regle.value = createReactiveNestedStatus({
|
|
2125
2193
|
rootRules: scopeRules,
|
|
2126
2194
|
rulesDef: scopeRules,
|
|
@@ -2128,7 +2196,7 @@ function useRootStorage({ initialState, options, scopeRules, state, customRules,
|
|
|
2128
2196
|
customMessages: customRules?.(),
|
|
2129
2197
|
storage,
|
|
2130
2198
|
options,
|
|
2131
|
-
externalErrors:
|
|
2199
|
+
externalErrors: computedExternalErrors,
|
|
2132
2200
|
validationGroups: options.validationGroups,
|
|
2133
2201
|
initialState,
|
|
2134
2202
|
shortcuts,
|
|
@@ -2146,7 +2214,7 @@ function useRootStorage({ initialState, options, scopeRules, state, customRules,
|
|
|
2146
2214
|
customMessages: customRules?.(),
|
|
2147
2215
|
storage,
|
|
2148
2216
|
options,
|
|
2149
|
-
externalErrors:
|
|
2217
|
+
externalErrors: computedExternalErrors,
|
|
2150
2218
|
initialState,
|
|
2151
2219
|
shortcuts,
|
|
2152
2220
|
fieldName: "root",
|
|
@@ -2473,7 +2541,7 @@ function createUseCollectScope(instances, options) {
|
|
|
2473
2541
|
//#region src/core/createScopedUseRegle/useScopedRegle.ts
|
|
2474
2542
|
function createUseScopedRegleComposable(instances, customUseRegle) {
|
|
2475
2543
|
const scopedUseRegle = customUseRegle ?? useRegle;
|
|
2476
|
-
const useScopedRegle$1 = (state, rulesFactory, options) => {
|
|
2544
|
+
const useScopedRegle$1 = ((state, rulesFactory, options) => {
|
|
2477
2545
|
const { namespace, scopeKey,...restOptions } = options ?? {};
|
|
2478
2546
|
scopedUseRegle.__config ??= {};
|
|
2479
2547
|
const computedNamespace = computed(() => toValue(namespace));
|
|
@@ -2514,7 +2582,7 @@ function createUseScopedRegleComposable(instances, customUseRegle) {
|
|
|
2514
2582
|
dispose,
|
|
2515
2583
|
register
|
|
2516
2584
|
};
|
|
2517
|
-
};
|
|
2585
|
+
});
|
|
2518
2586
|
return { useScopedRegle: useScopedRegle$1 };
|
|
2519
2587
|
}
|
|
2520
2588
|
|
|
@@ -2599,7 +2667,7 @@ function narrowVariant(root, discriminantKey, discriminantValue) {
|
|
|
2599
2667
|
* ```vue
|
|
2600
2668
|
* <script setup lang="ts">
|
|
2601
2669
|
* const variantR$ = variantToRef(r$, 'type', 'EMAIL');
|
|
2602
|
-
*
|
|
2670
|
+
* <\/script>
|
|
2603
2671
|
* ```
|
|
2604
2672
|
*/
|
|
2605
2673
|
function variantToRef(root, discriminantKey, discriminantValue) {
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function D(e,t,n){let r,i=(...i)=>new Promise(a=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,n||Promise.resolve(e.apply(this,[...i])).then(a)},t),n&&!r&&Promise.resolve(e.apply(this,[...i])).then(a)});return i.cancel=()=>{clearTimeout(r),r=void 0},i}function O(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!O(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];return!(w(e)&&w(t)&&s&&(r||!r&&n)&&!O(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const k={Inline:`__inline`,Async:`__async`};function A(e,t){return e.some(e=>e[t])}function j(e,t){return e.reduce((e,n)=>{let r=n[t]||[];return e.concat(r)},[])}function M(e){try{return e.map(e=>p(e))}catch{return[]}}function N(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function P(e){let t=e.toString(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function F(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===k.Async||n.constructor.name===`AsyncFunction`,s={validator(n,...r){return e.validator(n,...M(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:M(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:M(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:M(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...M(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)}},c=a({...s,type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:N(t),_brand:x});return c}function I(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=F({...e,async:n},...t);if(P(e.validator)>1){let t=function(...t){return F(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function L(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(!r)return;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=M(i._params),n=M(r._params);return e?.[t]===n?.[t]}}):!0}):!1}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function R(e){return w(e.value)}function z(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const B={LessThan:-1,EqualTo:0,GreaterThan:1};function V(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return B.GreaterThan;if(i>t)return B.LessThan;if(!isNaN(t)&&isNaN(i))return B.GreaterThan;if(isNaN(t)&&!isNaN(i))return B.LessThan}return B.EqualTo}const H=V(g,`3.5.0`)!==-1;function U(){return Math.floor(Math.random()*Date.now()).toString()}function W(){if(typeof window>`u`)return U();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.toString(10)}}function G(e){return r()?(c(e),!0):!1}function K(e){let n=!1,r,i=t(!0);return(...t)=>(n||(r=i.run(()=>e(...t)),n=!0),r)}function q(e,t){return R(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>X(t)||typeof t==`function`)}function J(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function Y(e){return!!e.value&&w(e.value)}function X(e){return w(e)&&`_validator`in e}function Z(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;let a={$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}};return a}),r=n.filter(e=>!!e),i=r.reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),a=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],o=e.$error?e.$schemaErrors??[]:[];return[...i,...a,...o]}function re({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>Q(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>Q(t,n,[e])).flat()}function Q(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({error:e,path:r?.join(`.`)??``})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>Q(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>Q(n,t,r?.concat(e))).flat()}function oe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,$debounce:d,modifiers:f}){let p=t(),m={},h,g=u(!1),v=u(!1),{$pending:y,$valid:x,$metadata:S,$validating:C}=c.trySetRuleStatusRef(`${s}.${i}`);function w(){p=t(),m=p.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:x.value,$invalid:!x.value,$pending:y.value},$params:C.value,...S.value})),p=e(()=>Z(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Z(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Z(r)&&r.value.type?r.value.type:i),v=e(()=>Z(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:M(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:v,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),h=_(m?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&m.$fieldError.value)&&k()})}w();function T(){x.value=!0,m.$fieldDirty.value&&(y.value=!0)}async function E(){let e=!1;try{let t=m.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...m.$params.value),r=a.value;T();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,S.value=n}}catch{e=!1}finally{y.value=!1}return e}let O=D(E,d??200);async function k(){try{C.value=!0;let e=!1;if(v.value=!0,X(r.value)&&r.value._async)e=await O();else{let t=m.$validator.value,n=t(a.value,...m.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,S.value=r}}return x.value=e,e}catch{return!1}finally{C.value=!1,v.value=!1}}function A(){x.value=!0,S.value={},y.value=!1,C.value=!1,w()}function j(){h(),p.stop(),p=t()}return l({...m,$pending:y,$valid:x,$metadata:S,$haveAsync:g,$maybePending:v,$validating:C,$parse:k,$unwatch:j,$watch:w,$reset:A})}function se({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,shortcuts:T,onValidate:k}){let A=t(),j,M=[],N,P,F,I,L=()=>{};function R(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);K.value=s,V();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,oe({modifiers:{$silent:j.$silent,$rewardEarly:j.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:K.value.$debounce})])}G.value=Object.fromEntries(u),j.processShortcuts(),z(),t?.valid!=null&&(j.$dirty.value=c.getDirtyState(o),(j.$dirty.value&&!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L()),c.addRuleDeclEntry(o,e)}function z(){L=j.$debounce.value?D(W,j.$debounce.value??j.$haveAnyAsyncRule?100:0):W}function B(){if(G.value)for(let e of Object.values(G.value))e.$unwatch();P(),I?.(),j.$dirty.value&&c.setDirtyEntry(o,j.$dirty.value),N?.(),A.stop(),A=t();for(let e of M)e.stop();M=[],y?.(),F?.()}function V(){if(G.value)for(let e of Object.values(G.value))e.$watch();j=A.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>K.value.$debounce),f=e(()=>K.value.$deepCompare==null?!1:K.value.$deepCompare),_=e(()=>K.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):K.value.$lazy),y=e(()=>K.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):K.value.$rewardEarly),x=e(()=>K.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):K.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:K.value.$silent==null?h(d.silent)==null?!1:h(d.silent):K.value.$silent),w=e(()=>K.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):K.value.$autoDirty),D=e(()=>{for(let e of Object.values(G.value))if(e.$validating)return!0;return!1}),k=e({get:()=>n.value,set(e){N(),n.value=e,U()}}),A=e(()=>H.value&&!V.value&&i.value),j=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),P=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),F=e(()=>j.value.map(e=>e.$message)),I=e(()=>P.value.map(e=>e.$message)),L=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?E(S.value).getDate()!==E(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!O(n.value,S.value,K.value.$deepCompare):S.value!==n.value:!1),R=e(()=>L.value),z=e(()=>re({field:{$rules:G.value}})),B=e(()=>(C.value||o.value)&&!(H.value||V.value)),V=e(()=>a.value||!y.value?Object.entries(G.value).some(([e,t])=>t.$pending):!1),H=e(()=>p?.value?.length||m?.value?.length?!0:q.value?!1:!y.value||y.value?Object.values(G.value).some(e=>!e.$valid||e.$maybePending):!1),W=e(()=>s),q=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),J=e(()=>{if(p?.value?.length||q.value)return!1;if(i.value&&!b(n.value)&&!D.value&&!V.value){if(g)return!m?.value?.length;{let e=Object.values(G.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),Y=e(()=>Object.values(G.value).some(e=>e.$haveAsync));function X(){T?.fields&&Object.entries(T.fields).forEach(([e,r])=>{let a=t();Z[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:k,$rules:G,$error:A,$pending:V,$invalid:H,$correct:J,$errors:F,$ready:B,$silentErrors:I,$anyDirty:o,$tooltips:z,$name:W,$inactive:q,$edited:L,$anyEdited:R}))}),e}),M.push(a)})}let Z={};return{$error:A,$pending:V,$invalid:H,$correct:J,$debounce:c,$deepCompare:f,$lazy:_,$ready:B,$issues:j,$silentIssues:P,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:Y,$shortcuts:Z,$validating:D,$tooltips:z,$dirty:i,processShortcuts:X,$silentValue:k,$inactive:q}}),U(),P=_(j.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(G.value).forEach(t=>{t.$fieldDirty=e})}),I=_([j.$error,j.$correct,j.$invalid,j.$pending],()=>{Object.values(G.value).forEach(e=>{e.$fieldError=j.$error.value,e.$fieldInvalid=j.$invalid.value,e.$fieldPending=j.$pending.value,e.$fieldCorrect=j.$correct.value})}),F=_(j.$haveAnyAsyncRule,z)}function U(){N=_(n,()=>{j.$autoDirty.value&&!j.$silent.value&&(j.$dirty.value||(j.$dirty.value=!0)),r.value instanceof Function&&R(),(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L(),j.$clearExternalErrorsOnChange.value&&Z()},{deep:x?!0:H?1:!0})}function W(){Object.values(G.value).forEach(e=>{e.$parse()})}let G=u({}),K=u({});R();function q(e,t){if(Z(),j.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&Z(),!t)for(let e of Object.values(G.value))e.$reset();if(!j.$lazy.value&&!j.$silent.value&&!t)for(let e of Object.values(G.value))e.$parse()}function J(e=!0,t=!1){j.$dirty.value||(j.$dirty.value=!0),t&&e?(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L():e&&L()}async function Y(){try{if(g)return k?(J(!1),k()):{valid:!1,data:n.value};let e=n.value;if(!j.$dirty.value)j.$dirty.value=!0;else if(!j.$silent.value&&j.$dirty.value&&!j.$pending.value)return{valid:!j.$error.value,data:e};if(g)return{valid:!m?.value?.length,data:e};if(b(G.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.values(G.value).map(e=>e.$parse())),r=t.every(e=>e.status===`fulfilled`&&e.value===!0);return{valid:r,data:e}}catch{return{valid:!1,data:n.value}}}function X(e=!0){return j.$dirty.value?n.value:e?{_null:!0}:null}function Z(){p?.value?.length&&(p.value=[])}!j.$lazy.value&&!j.$dirty.value&&!j.$silent.value&&L();let{$shortcuts:ee,$validating:te,$autoDirty:ie,$rewardEarly:ae,$clearExternalErrorsOnChange:Q,$haveAnyAsyncRule:se,$debounce:ce,$lazy:le,...ue}=j;return l({...ue,$externalErrors:p,$value:n,$initialValue:S,$rules:G,...ee,$path:a,$reset:q,$touch:J,$validate:Y,$unwatch:B,$watch:V,$extractDirtyFields:X,$clearExternalErrors:Z})}function ce({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,shortcuts:m,fieldName:h,schemaMode:g}){let _=s.value?.$id??l.$key??W(),v=`${r}.${String(_)}`,y=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:_,enumerable:!1,configurable:!1,writable:!1}}));let b=f(u?.value??[],i),x=e(()=>d?.value?.[i]),S=$({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:y,cachePath:v,storage:o,options:a,externalErrors:b,schemaErrors:x,initialState:p,shortcuts:m,fieldName:h,schemaMode:g});if(S){let e=s.value?.$id;S.$id=e??String(_),o.addArrayStatus(t,S.$id,S)}return S}function le({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,shortcuts:g,fieldName:y}){let x=t(),S,w=t(),T,E=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let D=u(),O=u(n.value),k=u({}),A,j,M=u({}),N=o.getCollectionsEntry(a);T=w.run(()=>{let t=e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>X(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),P(),R();function P(){k.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(D.value=W(),Object.defineProperties(n.value,{$id:{value:D.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(D.value=n.value.$id)),O.value=M.value.$value,Array.isArray(n.value)&&!T.isPrimitiveArray.value?N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=z(r.value.$each,f(()=>t),n);l&&E.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each),b=ce({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,shortcuts:g,fieldName:y,schemaMode:p});return b||null}).filter(e=>!!e):N.value=[],M.value=se({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,shortcuts:g,fieldName:y,schemaMode:p})}function F(){if(Array.isArray(n.value)&&!T.isPrimitiveArray.value){let t=C(N.value);N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&N.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(D.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=z(r.value.$each,l,n);t&&E.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]),v=ce({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),shortcuts:g,fieldName:y,schemaMode:p});return v||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(D.value,t.toString())})}else N.value=[]}function I(){A=_(n,()=>{j?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!D.value?P():F(),L()},{deep:H?1:!0,flush:`pre`}),L()}function L(){j=_(n,()=>{S.$autoDirty.value&&!S.$silent.value&&M.value.$touch(!1,!0)},{flush:`post`})}function R(){I(),x=t(),S=x.run(()=>{let r=e({get:()=>n.value,set(e){A?.(),j?.(),n.value=e,I()}}),i=e(()=>M.value.$dirty&&(!N.value.length||N.value.every(e=>e.$dirty))),o=e(()=>M.value.$anyDirty||N.value.some(e=>e.$anyDirty)),c=e(()=>M.value.$invalid||N.value.some(e=>e.$invalid)),d=e(()=>(b(M.value.$rules)?!0:M.value.$correct)&&(!N.value.length||N.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>M.value.$error||N.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>M.value.$pending||N.value.some(e=>e.$pending)),x=e(()=>!!N.value.length&&N.value.every(e=>e.$edited)),S=e(()=>M.value.$anyEdited||N.value.some(e=>e.$anyEdited)),C=e(()=>({$self:M.value.$issues,$each:N.value.map(e=>e.$issues)})),w=e(()=>({$self:M.value.$errors,$each:N.value.map(e=>e.$errors)})),T=e(()=>({$self:M.value.$silentErrors,$each:N.value.map(e=>e.$silentErrors)})),D=e(()=>k.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):k.value.$rewardEarly),O=e(()=>D.value?!0:k.value.$silent==null?h(s.silent)==null?!1:h(s.silent):k.value.$silent),P=e(()=>k.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):k.value.$autoDirty),F=e(()=>y);function L(){g?.collections&&Object.entries(g?.collections).forEach(([e,s])=>{let h=t();R[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:c,$correct:d,$errors:w,$silentErrors:T,$initialValue:m,$ready:p,$anyDirty:o,$name:F,$each:N,$self:M,$value:n,$edited:x,$anyEdited:S,$issues:C}))}),e}),E.push(h)})}let R={};return L(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:w,$silentErrors:T,$ready:p,$name:F,$shortcuts:R,$silentValue:r,$edited:x,$anyEdited:S,$rewardEarly:D,$silent:O,$autoDirty:P,$issues:C}}),T.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function B(){A?.(),M.value&&M.value.$unwatch(),N.value&&N.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),x.stop(),x=t(),w.stop(),w=t(!0),E.forEach(e=>e.stop()),E=[]}function V(e=!0,t=!1){M.value.$touch(e,t),N.value.forEach(n=>{n.$touch(e,t)})}function U(e,t){if(B(),!t)if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&K(),M.value.$reset(e,t),N.value.forEach(t=>{t.$reset(e,!0)}),t||P()}async function G(){let e=n.value;try{let t=await Promise.allSettled([M.value.$validate(),...N.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function K(){M.value.$clearExternalErrors(),N.value.forEach(e=>{e.$clearExternalErrors()})}function q(e=!0){let t=N.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:J,...Y}=S;return l({$self:M,...Y,...J,$path:a,$each:N,$value:n,$initialValue:m,$validate:G,$unwatch:B,$watch:R,$touch:V,$reset:U,$extractDirtyFields:q,$clearExternalErrors:K})}function ue({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,fieldName:g,...y}){let x=t(),S,T=[],E=null,D=null,O=null,k=null,M=null;async function N(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,$({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,fieldName:n,...y})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,$({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t),h=e(()=>({}));return[t,$({state:l,rulesDef:h,path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,fieldName:t,...y})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]}));P.value={...l,...u,...d,...p},t&&L()}let P=y.storage.getFieldsEntry(a);N();function F(){s&&(O=_(s,()=>{R(),N()},{deep:!0}))}function I(){k=_(r,()=>{R(),N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(E?.(),E=_(o,()=>{R(),N()},{deep:!0,flush:`pre`}),F()),d&&(D?.(),D=_(d,()=>{R(),N()},{deep:!0,flush:`post`})),I(),S=x.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,N()}}),o=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!te(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?y.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>{if(!te(t))return t?.$correct;let n=`required`in t.$rules&&t.$rules.required.$active;return n?t.$correct:!t.$invalid&&!t.$pending}):!1}),f=e(()=>{let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(y.options.rewardEarly)==null?!1:h(y.options.rewardEarly)),b=e(()=>h(y.options.silent)==null?!!_.value:h(y.options.silent)),x=e(()=>h(y.options.autoDirty)==null?!0:h(y.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||E.value)),w=u(!1),E=e(()=>{if(w.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),D=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),O=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),k=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),M=e(()=>{if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),F=e(()=>{for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),I=e(()=>g);function L(){y.shortcuts?.nested&&Object.entries(y.shortcuts.nested).forEach(([e,n])=>{let p=t();B[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$pending:E,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:I,$silentErrors:k,$initialValue:m,$errors:O,$fields:P,$edited:M,$anyEdited:F,$issues:D}))}),e}),T.push(p)})}let z=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,A(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,j(t,e)]))}]:[])):{},set(){}}),B={};return L(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:E,$issues:D,$errors:O,$silentErrors:k,$ready:C,$name:I,$shortcuts:B,$groups:z,$silentValue:a,$edited:M,$anyEdited:F,$localPending:w,$autoDirty:x,$silent:b,$value:n}})}function R(){if(E?.(),O?.(),k?.(),M?.(),D?.(),T=[],S={},P.value)for(let e of Object.values(P.value))e.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors()}function B(e,t){if(O?.(),R(),!t)if(e?.toInitialState)r.value=C({...m.value??{}});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);for(let t of Object.values(P.value))t.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||N()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n.$touch(e,t)}function H(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}async function W(){try{if(y.schemaMode)return y.onValidate?(V(!1),S.$localPending.value=!0,y.onValidate()):{valid:!1,data:r.value};{let e=r.value,t=await Promise.allSettled(Object.values(P.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`&&e?.value.valid===!0);return{valid:n,data:e}}}catch{return{valid:!1,data:r.value}}finally{S.$localPending.value=!1}}let{$shortcuts:G,$localPending:K,...q}=S,J=l({...q,...G,$path:i,$initialValue:m,$fields:P,$reset:B,$touch:V,$validate:W,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)))delete J[e];for(let e of Object.values(P.value))Object.assign(J,{[e.$name]:e})}),J}function $({rulesDef:e,...n}){if(J(e,n.state,n.schemaMode))return le({rulesDef:e,...n});if(q(n.state,e)){if(R(n.state))return ue({rulesDef:e,...n});{let r=t(),i=r.run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:a,...o}=n;return ue({rulesDef:e,...o,state:i.fakeState})}}else if(Y(e))return se({rulesDef:e,...n})}function de({initialState:e,options:t,scopeRules:n,state:i,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:d=!1,onValidate:f}){let p=L(),m=u();return q(i,n)?m.value=ue({rootRules:n,rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaErrors:s,rootSchemaErrors:s,schemaMode:d,onValidate:f}):Y(n)&&(m.value=se({rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaMode:d,schemaErrors:s,onValidate:f})),r()&&c(()=>{m.value?.$unwatch()}),l({regle:m})}function fe(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o,s){let c=i(o)?o:typeof o==`function`?void 0:e(()=>o),l={...a,...s},f=i(n)?n:u(n),p=d(c??{});typeof o==`function`&&v(()=>{p.value=o(f),m(p)});let h=u(w(f.value)?{...C(f.value)}:C(f.value)),g=de({scopeRules:p,state:f,options:l,initialState:h,customRules:t,shortcuts:r});return{r$:g.regle}}return o}const pe=fe();function me(){function e(e,t){return t}return e}const he=me();function ge({rules:e,modifiers:t,shortcuts:n}){let r=fe(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let i=me();return{useRegle:r,inferRules:i}}function _e(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=fe(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=me();return{useRegle:c,inferRules:l}}function ve(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),g=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),_=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),v=e(()=>r?Object.values(t):t);function y(e){Object.values(t).forEach(t=>{t.$reset(e)})}function b(){Object.values(t).forEach(e=>{e.$touch()})}function x(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function S(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function C(){try{let e=i.value,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function ye(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return ve(t,!n.asRecord)}else return ve(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function be(t,r){let i=r??pe,a=(r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${W()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),G(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}};return{useScopedRegle:a}}function xe(e){let t=e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):K(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=be(n,e?.customUseRegle),{useCollectScope:i}=ye(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Se,useScopedRegle:Ce}=xe();function we(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(X(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function Te(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ee(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),Te(r.value,t,n)?a.value=r.value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function De(e){return e}function Oe(e,t){return n=>T({...e},t(n))}export{k as InternalRuleType,I as createRule,xe as createScopedUseRegle,we as createVariant,ge as defineRegleConfig,De as defineRules,_e as extendRegleConfig,ae as flatErrors,he as inferRules,ve as mergeRegles,Te as narrowVariant,Oe as refineRules,M as unwrapRuleParameters,Se as useCollectScope,pe as useRegle,de as useRootStorage,Ce as useScopedRegle,Ee as variantToRef};
|
|
1
|
+
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)a[t]=r;else{if(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!i[e+1].match(/^\d+$/)){let n=i[e+1];a[t]=n&&n.match(/^\d+$/)?{$each:[]}:{}}a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function O(e,t,n){let r,i=(...i)=>new Promise(a=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,n||Promise.resolve(e.apply(this,[...i])).then(a)},t),n&&!r&&Promise.resolve(e.apply(this,[...i])).then(a)});return i.cancel=()=>{clearTimeout(r),r=void 0},i}function k(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!k(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];return!(w(e)&&w(t)&&s&&(r||!r&&n)&&!k(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const A={Inline:`__inline`,Async:`__async`};function j(e,t){return e.some(e=>e[t])}function M(e,t){return e.reduce((e,n)=>{let r=n[t]||[];return e.concat(r)},[])}function N(e){try{return e.map(e=>p(e))}catch{return[]}}function P(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function F(e){let t=e.toString(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function I(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===A.Async||n.constructor.name===`AsyncFunction`,s={validator(n,...r){return e.validator(n,...N(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:N(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:N(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:N(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...N(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)}},c=a({...s,type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:P(t),_brand:x});return c}function L(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=I({...e,async:n},...t);if(F(e.validator)>1){let t=function(...t){return I(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function R(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(!r)return;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=N(i._params),n=N(r._params);return e?.[t]===n?.[t]}}):!0}):!1}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function z(e){return w(e.value)}function B(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const V={LessThan:-1,EqualTo:0,GreaterThan:1};function H(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return V.GreaterThan;if(i>t)return V.LessThan;if(!isNaN(t)&&isNaN(i))return V.GreaterThan;if(isNaN(t)&&!isNaN(i))return V.LessThan}return V.EqualTo}const U=H(g,`3.5.0`)!==-1;function W(){return Math.floor(Math.random()*Date.now()).toString()}function G(){if(typeof window>`u`)return W();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.toString(10)}}function K(e){return r()?(c(e),!0):!1}function q(e){let n=!1,r,i=t(!0);return((...t)=>(n||(r=i.run(()=>e(...t)),n=!0),r))}function J(e,t){return z(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>Z(t)||typeof t==`function`)}function Y(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function X(e){return!!e.value&&w(e.value)}function Z(e){return w(e)&&`_validator`in e}function Q(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;let a={$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}};return a}),r=n.filter(e=>!!e),i=r.reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),a=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],o=e.$error?e.$schemaErrors??[]:[];return[...i,...a,...o]}function re({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>oe(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>oe(t,n,[e])).flat()}function oe(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({error:e,path:r?.join(`.`)??``})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>oe(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>oe(n,t,r?.concat(e))).flat()}function se({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,$debounce:d,modifiers:f}){let p=t(),m={},h,g=u(!1),v=u(!1),{$pending:y,$valid:x,$metadata:S,$validating:C}=c.trySetRuleStatusRef(`${s}.${i}`);function w(){p=t(),m=p.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:x.value,$invalid:!x.value,$pending:y.value},$params:C.value,...S.value})),p=e(()=>Q(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Q(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Q(r)&&r.value.type?r.value.type:i),v=e(()=>Q(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:N(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:v,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),h=_(m?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&m.$fieldError.value)&&k()})}w();function T(){x.value=!0,m.$fieldDirty.value&&(y.value=!0)}async function E(){let e=!1;try{let t=m.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...m.$params.value),r=a.value;T();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,S.value=n}}catch{e=!1}finally{y.value=!1}return e}let D=O(E,d??200);async function k(){try{C.value=!0;let e=!1;if(v.value=!0,Z(r.value)&&r.value._async)e=await D();else{let t=m.$validator.value,n=t(a.value,...m.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,S.value=r}}return x.value=e,e}catch{return!1}finally{C.value=!1,v.value=!1}}function A(){x.value=!0,S.value={},y.value=!1,C.value=!1,w()}function j(){h(),p.stop(),p=t()}return l({...m,$pending:y,$valid:x,$metadata:S,$haveAsync:g,$maybePending:v,$validating:C,$parse:k,$unwatch:j,$watch:w,$reset:A})}function ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,shortcuts:T,onValidate:E}){let A=t(),j,M=[],N,P,F,I,L=()=>{};function R(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);K.value=s,V();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,se({modifiers:{$silent:j.$silent,$rewardEarly:j.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:K.value.$debounce})])}G.value=Object.fromEntries(u),j.processShortcuts(),z(),t?.valid!=null&&(j.$dirty.value=c.getDirtyState(o),(j.$dirty.value&&!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L()),c.addRuleDeclEntry(o,e)}function z(){L=j.$debounce.value?O(W,j.$debounce.value??j.$haveAnyAsyncRule?100:0):W}function B(){if(G.value)for(let e of Object.values(G.value))e.$unwatch();P(),I?.(),j.$dirty.value&&c.setDirtyEntry(o,j.$dirty.value),N?.(),A.stop(),A=t();for(let e of M)e.stop();M=[],y?.(),F?.()}function V(){if(G.value)for(let e of Object.values(G.value))e.$watch();j=A.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>K.value.$debounce),f=e(()=>K.value.$deepCompare==null?!1:K.value.$deepCompare),_=e(()=>K.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):K.value.$lazy),y=e(()=>K.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):K.value.$rewardEarly),x=e(()=>K.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):K.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:K.value.$silent==null?h(d.silent)==null?!1:h(d.silent):K.value.$silent),w=e(()=>K.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):K.value.$autoDirty),E=e(()=>{for(let e of Object.values(G.value))if(e.$validating)return!0;return!1}),O=e({get:()=>n.value,set(e){N(),n.value=e,H()}}),A=e(()=>U.value&&!V.value&&i.value),j=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),P=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),F=e(()=>j.value.map(e=>e.$message)),I=e(()=>P.value.map(e=>e.$message)),L=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?D(S.value).getDate()!==D(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!k(n.value,S.value,K.value.$deepCompare):S.value!==n.value:!1),R=e(()=>L.value),z=e(()=>re({field:{$rules:G.value}})),B=e(()=>(C.value||o.value)&&!(U.value||V.value)),V=e(()=>a.value||!y.value?Object.entries(G.value).some(([e,t])=>t.$pending):!1),U=e(()=>p?.value?.length||m?.value?.length?!0:q.value?!1:Object.values(G.value).some(e=>!e.$valid||e.$maybePending)),W=e(()=>s),q=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),J=e(()=>{if(p?.value?.length||q.value)return!1;if(i.value&&!b(n.value)&&!E.value&&!V.value){if(g)return!m?.value?.length;{let e=Object.values(G.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),Y=e(()=>Object.values(G.value).some(e=>e.$haveAsync));function X(){T?.fields&&Object.entries(T.fields).forEach(([e,r])=>{let a=t();Z[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:O,$rules:G,$error:A,$pending:V,$invalid:U,$correct:J,$errors:F,$ready:B,$silentErrors:I,$anyDirty:o,$tooltips:z,$name:W,$inactive:q,$edited:L,$anyEdited:R}))}),e}),M.push(a)})}let Z={};return{$error:A,$pending:V,$invalid:U,$correct:J,$debounce:c,$deepCompare:f,$lazy:_,$ready:B,$issues:j,$silentIssues:P,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:Y,$shortcuts:Z,$validating:E,$tooltips:z,$dirty:i,processShortcuts:X,$silentValue:O,$inactive:q}}),H(),P=_(j.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(G.value).forEach(t=>{t.$fieldDirty=e})}),I=_([j.$error,j.$correct,j.$invalid,j.$pending],()=>{Object.values(G.value).forEach(e=>{e.$fieldError=j.$error.value,e.$fieldInvalid=j.$invalid.value,e.$fieldPending=j.$pending.value,e.$fieldCorrect=j.$correct.value})}),F=_(j.$haveAnyAsyncRule,z)}function H(){N=_(n,()=>{j.$autoDirty.value&&!j.$silent.value&&(j.$dirty.value||(j.$dirty.value=!0)),r.value instanceof Function&&R(),(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L(),j.$clearExternalErrorsOnChange.value&&Z()},{deep:x?!0:U?1:!0})}function W(){Object.values(G.value).forEach(e=>{e.$parse()})}let G=u({}),K=u({});R();function q(e,t){if(Z(),j.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&Z(),!t)for(let e of Object.values(G.value))e.$reset();if(!j.$lazy.value&&!j.$silent.value&&!t)for(let e of Object.values(G.value))e.$parse()}function J(e=!0,t=!1){j.$dirty.value||(j.$dirty.value=!0),t&&e?(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&L():e&&L()}async function Y(){try{if(g)return E?(J(!1),E()):{valid:!1,data:n.value};let e=n.value;if(!j.$dirty.value)j.$dirty.value=!0;else if(!j.$silent.value&&j.$dirty.value&&!j.$pending.value)return{valid:!j.$error.value,data:e};if(g)return{valid:!m?.value?.length,data:e};if(b(G.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.values(G.value).map(e=>e.$parse())),r=t.every(e=>e.status===`fulfilled`&&e.value===!0);return{valid:r,data:e}}catch{return{valid:!1,data:n.value}}}function X(e=!0){return j.$dirty.value?n.value:e?{_null:!0}:null}function Z(){p?.value?.length&&(p.value=[])}!j.$lazy.value&&!j.$dirty.value&&!j.$silent.value&&L();let{$shortcuts:Q,$validating:ee,$autoDirty:te,$rewardEarly:ie,$clearExternalErrorsOnChange:ae,$haveAnyAsyncRule:oe,$debounce:ce,$lazy:le,...ue}=j;return l({...ue,$externalErrors:p,$value:n,$initialValue:S,$rules:G,...Q,$path:a,$reset:q,$touch:J,$validate:Y,$unwatch:B,$watch:V,$extractDirtyFields:X,$clearExternalErrors:Z})}function le({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,shortcuts:m,fieldName:h,schemaMode:g}){let _=s.value?.$id??l.$key??G(),v=`${r}.${String(_)}`,y=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:_,enumerable:!1,configurable:!1,writable:!1}}));let b=f(u?.value??[],i),x=e(()=>d?.value?.[i]),S=$({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:y,cachePath:v,storage:o,options:a,externalErrors:b,schemaErrors:x,initialState:p,shortcuts:m,fieldName:h,schemaMode:g});if(S){let e=s.value?.$id;S.$id=e??String(_),o.addArrayStatus(t,S.$id,S)}return S}function ue({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,shortcuts:g,fieldName:y}){let x=t(),S,w=t(),T,E=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let D=u(),O=u(n.value),k=u({}),A,j,M=u({}),N=o.getCollectionsEntry(a);T=w.run(()=>{let t=e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Z(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),P(),R();function P(){k.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(D.value=G(),Object.defineProperties(n.value,{$id:{value:D.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(D.value=n.value.$id)),O.value=M.value.$value,Array.isArray(n.value)&&!T.isPrimitiveArray.value?N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=B(r.value.$each,f(()=>t),n);l&&E.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each),b=le({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,shortcuts:g,fieldName:y,schemaMode:p});return b||null}).filter(e=>!!e):N.value=[],M.value=ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,shortcuts:g,fieldName:y,schemaMode:p})}function F(){if(Array.isArray(n.value)&&!T.isPrimitiveArray.value){let t=C(N.value);N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&N.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(D.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=B(r.value.$each,l,n);t&&E.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]),v=le({$id:D.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),shortcuts:g,fieldName:y,schemaMode:p});return v||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(D.value,t.toString())})}else N.value=[]}function I(){A=_(n,()=>{j?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!D.value?P():F(),L()},{deep:U?1:!0,flush:`pre`}),L()}function L(){j=_(n,()=>{S.$autoDirty.value&&!S.$silent.value&&M.value.$touch(!1,!0)},{flush:`post`})}function R(){I(),x=t(),S=x.run(()=>{let r=e({get:()=>n.value,set(e){A?.(),j?.(),n.value=e,I()}}),i=e(()=>M.value.$dirty&&(!N.value.length||N.value.every(e=>e.$dirty))),o=e(()=>M.value.$anyDirty||N.value.some(e=>e.$anyDirty)),c=e(()=>M.value.$invalid||N.value.some(e=>e.$invalid)),d=e(()=>(b(M.value.$rules)?!0:M.value.$correct)&&(!N.value.length||N.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>M.value.$error||N.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>M.value.$pending||N.value.some(e=>e.$pending)),x=e(()=>!!N.value.length&&N.value.every(e=>e.$edited)),S=e(()=>M.value.$anyEdited||N.value.some(e=>e.$anyEdited)),C=e(()=>({$self:M.value.$issues,$each:N.value.map(e=>e.$issues)})),w=e(()=>({$self:M.value.$errors,$each:N.value.map(e=>e.$errors)})),T=e(()=>({$self:M.value.$silentErrors,$each:N.value.map(e=>e.$silentErrors)})),D=e(()=>k.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):k.value.$rewardEarly),O=e(()=>D.value?!0:k.value.$silent==null?h(s.silent)==null?!1:h(s.silent):k.value.$silent),P=e(()=>k.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):k.value.$autoDirty),F=e(()=>y);function L(){g?.collections&&Object.entries(g?.collections).forEach(([e,s])=>{let h=t();R[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:c,$correct:d,$errors:w,$silentErrors:T,$initialValue:m,$ready:p,$anyDirty:o,$name:F,$each:N,$self:M,$value:n,$edited:x,$anyEdited:S,$issues:C}))}),e}),E.push(h)})}let R={};return L(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:w,$silentErrors:T,$ready:p,$name:F,$shortcuts:R,$silentValue:r,$edited:x,$anyEdited:S,$rewardEarly:D,$silent:O,$autoDirty:P,$issues:C}}),T.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function z(){A?.(),M.value&&M.value.$unwatch(),N.value&&N.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),x.stop(),x=t(),w.stop(),w=t(!0),E.forEach(e=>e.stop()),E=[]}function V(e=!0,t=!1){M.value.$touch(e,t),N.value.forEach(n=>{n.$touch(e,t)})}function H(e,t){if(z(),!t)if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&K(),M.value.$reset(e,t),N.value.forEach(t=>{t.$reset(e,!0)}),t||P()}async function W(){let e=n.value;try{let t=await Promise.allSettled([M.value.$validate(),...N.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function K(){M.value.$clearExternalErrors(),N.value.forEach(e=>{e.$clearExternalErrors()})}function q(e=!0){let t=N.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:J,...Y}=S;return l({$self:M,...Y,...J,$path:a,$each:N,$value:n,$initialValue:m,$validate:W,$unwatch:z,$watch:R,$touch:V,$reset:H,$extractDirtyFields:q,$clearExternalErrors:K})}function de({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,fieldName:g,...y}){let x=t(),S,T=[],E=null,D=null,O=null,k=null,A=null;async function N(t=!0){let o=Object.entries(n.value),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,$({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,fieldName:n,...y})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,$({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t),h=e(()=>({}));return[t,$({state:l,rulesDef:h,path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,fieldName:t,...y})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,fieldName:t,...y})]}));P.value={...l,...u,...d,...p},t&&L()}let P=y.storage.getFieldsEntry(a);N();function F(){s&&(O=_(s,()=>{R(),N()},{deep:!0}))}function I(){k=_(r,()=>{R(),N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(E?.(),E=_(o,()=>{R(),N()},{deep:!0,flush:`pre`}),F()),d&&(D?.(),D=_(d,()=>{R(),N()},{deep:!0,flush:`post`})),I(),S=x.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,N(),S.$autoDirty.value&&!S.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,N()}}),o=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!te(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?y.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>{if(!te(t))return t?.$correct;let n=`required`in t.$rules&&t.$rules.required.$active;return n?t.$correct:!t.$invalid&&!t.$pending}):!1}),f=e(()=>{let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(y.options.rewardEarly)==null?!1:h(y.options.rewardEarly)),b=e(()=>h(y.options.silent)==null?!!_.value:h(y.options.silent)),x=e(()=>h(y.options.autoDirty)==null?!0:h(y.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||E.value)),w=u(!1),E=e(()=>{if(w.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),D=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),O=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),k=e(()=>{let e={};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),A=e(()=>{if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),F=e(()=>{for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),I=e(()=>g);function L(){y.shortcuts?.nested&&Object.entries(y.shortcuts.nested).forEach(([e,n])=>{let p=t();B[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$pending:E,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:I,$silentErrors:k,$initialValue:m,$errors:O,$fields:P,$edited:A,$anyEdited:F,$issues:D}))}),e}),T.push(p)})}let z=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,j(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,M(t,e)]))}]:[])):{},set(){}}),B={};return L(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:E,$issues:D,$errors:O,$silentErrors:k,$ready:C,$name:I,$shortcuts:B,$groups:z,$silentValue:a,$edited:A,$anyEdited:F,$localPending:w,$autoDirty:x,$silent:b,$value:n}})}function R(){if(E?.(),O?.(),k?.(),A?.(),D?.(),T=[],S={},P.value)for(let e of Object.values(P.value))e.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors()}function B(e,t){if(O?.(),R(),!t)if(e?.toInitialState)r.value=C({...m.value??{}});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);for(let t of Object.values(P.value))t.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||N()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n.$touch(e,t)}function H(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}async function W(){try{if(y.schemaMode)return y.onValidate?(V(!1),S.$localPending.value=!0,y.onValidate()):{valid:!1,data:r.value};{let e=r.value,t=await Promise.allSettled(Object.values(P.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`&&e?.value.valid===!0);return{valid:n,data:e}}}catch{return{valid:!1,data:r.value}}finally{S.$localPending.value=!1}}let{$shortcuts:G,$localPending:K,...q}=S,J=l({...q,...G,$path:i,$initialValue:m,$fields:P,$reset:B,$touch:V,$validate:W,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)))delete J[e];for(let e of Object.values(P.value))Object.assign(J,{[e.$name]:e})}),J}function $({rulesDef:e,...n}){if(Y(e,n.state,n.schemaMode))return ue({rulesDef:e,...n});if(J(n.state,e)){if(z(n.state))return de({rulesDef:e,...n});{let r=t(),i=r.run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:a,...o}=n;return de({rulesDef:e,...o,state:i.fakeState})}}else if(X(e))return ce({rulesDef:e,...n})}function fe({initialState:e,options:t,scopeRules:n,state:i,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:d=!1,onValidate:f}){let p=R(),m=u(),h=u(),g,v;function y(){g=_(()=>t.externalErrors?.value,()=>{v?.(),t.externalErrors?.value&&Object.keys(t.externalErrors.value).some(e=>e.includes(`.`))?h.value=E(t.externalErrors.value):h.value=t.externalErrors?.value,b()},{immediate:!0,deep:!0})}function b(){v=_(()=>h.value,()=>{g?.(),t.externalErrors?.value&&(t.externalErrors.value=h.value),y()},{deep:!0})}return y(),J(i,n)?m.value=de({rootRules:n,rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:h,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaErrors:s,rootSchemaErrors:s,schemaMode:d,onValidate:f}):X(n)&&(m.value=ce({rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:h,initialState:e,shortcuts:o,fieldName:`root`,path:``,cachePath:``,schemaMode:d,schemaErrors:s,onValidate:f})),r()&&c(()=>{m.value?.$unwatch()}),l({regle:m})}function pe(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o,s){let c=i(o)?o:typeof o==`function`?void 0:e(()=>o),l={...a,...s},f=i(n)?n:u(n),p=d(c??{});typeof o==`function`&&v(()=>{p.value=o(f),m(p)});let h=u(w(f.value)?{...C(f.value)}:C(f.value)),g=fe({scopeRules:p,state:f,options:l,initialState:h,customRules:t,shortcuts:r});return{r$:g.regle}}return o}const me=pe();function he(){function e(e,t){return t}return e}const ge=he();function _e({rules:e,modifiers:t,shortcuts:n}){let r=pe(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let i=he();return{useRegle:r,inferRules:i}}function ve(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=pe(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=he();return{useRegle:c,inferRules:l}}function ye(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),g=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),_=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),v=e(()=>r?Object.values(t):t);function y(e){Object.values(t).forEach(t=>{t.$reset(e)})}function b(){Object.values(t).forEach(e=>{e.$touch()})}function x(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function S(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function C(){try{let e=i.value,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function be(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return ye(t,!n.asRecord)}else return ye(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function xe(t,r){let i=r??me,a=((r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${G()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),K(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}});return{useScopedRegle:a}}function Se(e){let t=e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):q(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=xe(n,e?.customUseRegle),{useCollectScope:i}=be(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Ce,useScopedRegle:we}=Se();function Te(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Z(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function Ee(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function De(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),Ee(r.value,t,n)?a.value=r.value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function Oe(e){return e}function ke(e,t){return n=>T({...e},t(n))}export{A as InternalRuleType,L as createRule,Se as createScopedUseRegle,Te as createVariant,_e as defineRegleConfig,Oe as defineRules,ve as extendRegleConfig,ae as flatErrors,ge as inferRules,ye as mergeRegles,Ee as narrowVariant,ke as refineRules,N as unwrapRuleParameters,Ce as useCollectScope,me as useRegle,fe as useRootStorage,we as useScopedRegle,De as variantToRef};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"description": "Headless form validation library for Vue 3",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"pinia": ">=2.2.5",
|
|
@@ -13,22 +13,22 @@
|
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@total-typescript/ts-reset": "0.6.1",
|
|
16
|
-
"@types/node": "22.
|
|
17
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
18
|
-
"@typescript-eslint/parser": "8.
|
|
16
|
+
"@types/node": "22.16.5",
|
|
17
|
+
"@typescript-eslint/eslint-plugin": "8.38.0",
|
|
18
|
+
"@typescript-eslint/parser": "8.38.0",
|
|
19
19
|
"@vue/test-utils": "2.4.6",
|
|
20
|
-
"eslint": "9.
|
|
21
|
-
"eslint-config-prettier": "10.1.
|
|
22
|
-
"eslint-plugin-vue": "10.
|
|
23
|
-
"expect-type": "1.2.
|
|
24
|
-
"prettier": "3.6.
|
|
25
|
-
"tsdown": "0.
|
|
20
|
+
"eslint": "9.31.0",
|
|
21
|
+
"eslint-config-prettier": "10.1.8",
|
|
22
|
+
"eslint-plugin-vue": "10.3.0",
|
|
23
|
+
"expect-type": "1.2.2",
|
|
24
|
+
"prettier": "3.6.2",
|
|
25
|
+
"tsdown": "0.13.0",
|
|
26
26
|
"type-fest": "4.41.0",
|
|
27
27
|
"typescript": "5.8.3",
|
|
28
28
|
"vitest": "3.2.4",
|
|
29
29
|
"vue": "3.5.17",
|
|
30
|
-
"vue-eslint-parser": "10.
|
|
31
|
-
"vue-tsc": "
|
|
30
|
+
"vue-eslint-parser": "10.2.0",
|
|
31
|
+
"vue-tsc": "3.0.3"
|
|
32
32
|
},
|
|
33
33
|
"type": "module",
|
|
34
34
|
"exports": {
|