@regle/core 1.11.0-beta.2 → 1.11.0-beta.4
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 +28 -8
- package/dist/regle-core.js +251 -117
- package/dist/regle-core.min.js +1 -1
- package/package.json +8 -8
package/dist/regle-core.d.ts
CHANGED
|
@@ -52,21 +52,39 @@ interface RegleBehaviourOptions {
|
|
|
52
52
|
* Define whether the external errors should be cleared when updating a field
|
|
53
53
|
*
|
|
54
54
|
* Default to `false` if `$silent` is set to `true`
|
|
55
|
-
* @default true
|
|
56
|
-
*
|
|
57
55
|
*
|
|
56
|
+
* @default true
|
|
58
57
|
*/
|
|
59
58
|
clearExternalErrorsOnChange?: boolean | undefined;
|
|
59
|
+
}
|
|
60
|
+
interface LocalRegleBehaviourOptions<TState$1 extends Record<string, any>, TRules$1 extends ReglePartialRuleTree<TState$1, CustomRulesDeclarationTree>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}> {
|
|
61
|
+
/**
|
|
62
|
+
* A dictionary of external errors to be injected into the field statuses.
|
|
63
|
+
*
|
|
64
|
+
* Useful for integrating errors from a backend or other validation sources.
|
|
65
|
+
* External errors can be assigned using a reactive object or a Ref, and will be merged into the `$externalErrors` and `$errors` properties for each field.
|
|
66
|
+
*
|
|
67
|
+
* More details: https://reglejs.dev/advanced-usage/external-errors
|
|
68
|
+
*/
|
|
69
|
+
externalErrors?: Ref<RegleExternalErrorTree<Unwrap<TState$1>> | Record<string, string[]>>;
|
|
70
|
+
/**
|
|
71
|
+
* Allows you to group fields for custom collective validation logic.
|
|
72
|
+
*
|
|
73
|
+
* The `validationGroups` option lets you define logical groupings of fields within your form that should be validated or checked together.
|
|
74
|
+
* This can be used, for example, to easily determine if a subset of your form (e.g. an "address" group or a set of "contact information" fields) are all valid or share a collective error state.
|
|
75
|
+
*
|
|
76
|
+
* The function receives the `$fields` object and must return an object where each key is a group name and the value is an array of RegleStatus or RegleFieldStatus instances representing the grouped fields.
|
|
77
|
+
* These groups can then be referenced using `$validationGroups.<groupName>` to access their combined validation state (e.g. `$invalid`, `$error`, `$errors`, etc).
|
|
78
|
+
*
|
|
79
|
+
* More details: https://reglejs.dev/core-concepts/modifiers#validationgroups
|
|
80
|
+
*/
|
|
81
|
+
validationGroups?: (fields: RegleStatus<TState$1, TRules$1>['$fields']) => TValidationGroups;
|
|
60
82
|
/**
|
|
61
83
|
* A unique identifier for the Regle instance in the devtools.
|
|
62
84
|
* @default undefined
|
|
63
85
|
*/
|
|
64
86
|
id?: string | undefined;
|
|
65
87
|
}
|
|
66
|
-
interface LocalRegleBehaviourOptions<TState$1 extends Record<string, any>, TRules$1 extends ReglePartialRuleTree<TState$1, CustomRulesDeclarationTree>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}> {
|
|
67
|
-
externalErrors?: Ref<RegleExternalErrorTree<Unwrap<TState$1>> | Record<string, string[]>>;
|
|
68
|
-
validationGroups?: (fields: RegleStatus<TState$1, TRules$1>['$fields']) => TValidationGroups;
|
|
69
|
-
}
|
|
70
88
|
type RegleValidationGroupEntry = RegleFieldStatus<any, any> | undefined;
|
|
71
89
|
interface RegleValidationGroupOutput {
|
|
72
90
|
$invalid: boolean;
|
|
@@ -779,9 +797,9 @@ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
|
779
797
|
readonly $issues: Record<string, $InternalRegleIssues>;
|
|
780
798
|
readonly $errors: Record<string, $InternalRegleErrors>;
|
|
781
799
|
readonly $silentErrors: Record<string, $InternalRegleErrors>;
|
|
800
|
+
readonly '~modifiers'?: RegleBehaviourOptions;
|
|
782
801
|
$extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
|
|
783
802
|
$validate: (forceValues?: any) => Promise<$InternalRegleResult>;
|
|
784
|
-
'~modifiers'?: RegleBehaviourOptions;
|
|
785
803
|
}
|
|
786
804
|
/**
|
|
787
805
|
* @public
|
|
@@ -862,6 +880,7 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
|
862
880
|
readonly $silentErrors: string[];
|
|
863
881
|
readonly $issues: RegleFieldIssue[];
|
|
864
882
|
readonly $isDebouncing: boolean;
|
|
883
|
+
readonly '~modifiers'?: FieldRegleBehaviourOptions;
|
|
865
884
|
$extractDirtyFields: (filterNullishValues?: boolean) => any;
|
|
866
885
|
$validate: (forceValues?: any) => Promise<$InternalRegleResult>;
|
|
867
886
|
}
|
|
@@ -1030,13 +1049,14 @@ type RegleCollectionStatus<TState$1 extends any[] = any[], TRules$1 extends Regl
|
|
|
1030
1049
|
* @internal
|
|
1031
1050
|
* @reference {@link RegleCollectionStatus}
|
|
1032
1051
|
*/
|
|
1033
|
-
interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fields' | '$issues' | '$errors' | '$silentErrors'> {
|
|
1052
|
+
interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fields' | '$issues' | '$errors' | '$silentErrors' | '~modifiers'> {
|
|
1034
1053
|
readonly $self: $InternalRegleFieldStatus;
|
|
1035
1054
|
readonly $each: Array<$InternalRegleStatusType>;
|
|
1036
1055
|
readonly $issues: $InternalRegleCollectionIssues;
|
|
1037
1056
|
readonly $errors: $InternalRegleCollectionErrors;
|
|
1038
1057
|
readonly $silentErrors: $InternalRegleCollectionErrors;
|
|
1039
1058
|
readonly $externalErrors?: string[];
|
|
1059
|
+
readonly '~modifiers'?: CollectionRegleBehaviourOptions;
|
|
1040
1060
|
$extractDirtyFields: (filterNullishValues?: boolean) => any[];
|
|
1041
1061
|
$validate: (forceValues?: any) => Promise<$InternalRegleResult>;
|
|
1042
1062
|
}
|
package/dist/regle-core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computed, effectScope, getCurrentInstance, getCurrentScope, isRef, markRaw, nextTick, onMounted, onScopeDispose, reactive, ref, shallowRef, toRef, toValue, triggerRef, unref, version, watch, watchEffect } from "vue";
|
|
1
|
+
import { computed, effectScope, getCurrentInstance, getCurrentScope, inject, isRef, markRaw, nextTick, onMounted, onScopeDispose, reactive, ref, shallowRef, toRef, toValue, triggerRef, unref, version, watch, watchEffect } from "vue";
|
|
2
2
|
import { setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -784,21 +784,31 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
784
784
|
...$metadata.value
|
|
785
785
|
}));
|
|
786
786
|
const $active = computed(() => {
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
787
|
+
try {
|
|
788
|
+
if (isFormRuleDefinition(rule)) if (typeof rule.value.active === "function") return rule.value.active($defaultMetadata.value);
|
|
789
|
+
else return !!rule.value.active;
|
|
790
|
+
else return true;
|
|
791
|
+
} catch (e) {
|
|
792
|
+
console.error(`Error in "active" function for "${path}.${ruleKey}" rule`, { cause: e });
|
|
793
|
+
return true;
|
|
794
|
+
}
|
|
790
795
|
});
|
|
791
796
|
function computeRuleProcessor(key) {
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
797
|
+
try {
|
|
798
|
+
let result = "";
|
|
799
|
+
const customProcessor = customMessages ? customMessages[ruleKey]?.[key] : void 0;
|
|
800
|
+
if (customProcessor) if (typeof customProcessor === "function") result = customProcessor($defaultMetadata.value);
|
|
801
|
+
else result = customProcessor;
|
|
802
|
+
if (isFormRuleDefinition(rule)) {
|
|
803
|
+
const patchedKey = `_${key}_patched`;
|
|
804
|
+
if (!(customProcessor && !rule.value[patchedKey])) if (typeof rule.value[key] === "function") result = rule.value[key]($defaultMetadata.value);
|
|
805
|
+
else result = rule.value[key] ?? "";
|
|
806
|
+
}
|
|
807
|
+
return result;
|
|
808
|
+
} catch (e) {
|
|
809
|
+
console.error(`Error in "${key}" function for "${path}.${ruleKey}" rule`, { cause: e });
|
|
810
|
+
return "";
|
|
800
811
|
}
|
|
801
|
-
return result;
|
|
802
812
|
}
|
|
803
813
|
const $message = computed(() => {
|
|
804
814
|
let message = computeRuleProcessor("message");
|
|
@@ -861,7 +871,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
861
871
|
if (state.value !== cachedValue) return true;
|
|
862
872
|
if (typeof validatorResult === "boolean") ruleResult = validatorResult;
|
|
863
873
|
else {
|
|
864
|
-
const { $valid: $valid$1
|
|
874
|
+
const { $valid: $valid$1, ...rest } = validatorResult;
|
|
865
875
|
ruleResult = $valid$1;
|
|
866
876
|
$metadata.value = rest;
|
|
867
877
|
}
|
|
@@ -884,7 +894,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
884
894
|
if (resultOrPromise instanceof Promise) console.warn("You used a async validator function on a non-async rule, please use \"async await\" or the \"withAsync\" helper");
|
|
885
895
|
else if (resultOrPromise != null) if (typeof resultOrPromise === "boolean") ruleResult = resultOrPromise;
|
|
886
896
|
else {
|
|
887
|
-
const { $valid: $valid$1
|
|
897
|
+
const { $valid: $valid$1, ...rest } = resultOrPromise;
|
|
888
898
|
ruleResult = $valid$1;
|
|
889
899
|
$metadata.value = rest;
|
|
890
900
|
}
|
|
@@ -940,6 +950,7 @@ function createStandardSchema(validateFn) {
|
|
|
940
950
|
} };
|
|
941
951
|
}
|
|
942
952
|
|
|
953
|
+
const DEFAULT_DEBOUNCE_TIME = 200;
|
|
943
954
|
function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cachePath, fieldName, storage, options, externalErrors, schemaErrors, schemaMode, onUnwatch, $isArray, initialState, originalState, shortcuts, onValidate }) {
|
|
944
955
|
let scope = effectScope();
|
|
945
956
|
let scopeState;
|
|
@@ -990,7 +1001,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
990
1001
|
storage.addRuleDeclEntry(cachePath, declaredRules);
|
|
991
1002
|
}
|
|
992
1003
|
function define$commit() {
|
|
993
|
-
if (scopeState.$debounce.value
|
|
1004
|
+
if (scopeState.$debounce.value > 0) $commit = debounce($commitHandler, scopeState.$debounce.value, { trackDebounceRef: $isDebouncing });
|
|
994
1005
|
else $commit = $commitHandler;
|
|
995
1006
|
}
|
|
996
1007
|
function $unwatch() {
|
|
@@ -1013,7 +1024,9 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1013
1024
|
const triggerPunishment = ref(false);
|
|
1014
1025
|
const $anyDirty = computed(() => $dirty.value);
|
|
1015
1026
|
const $debounce$1 = computed(() => {
|
|
1016
|
-
return $localOptions.value.$debounce;
|
|
1027
|
+
if ($localOptions.value.$debounce != null) return $localOptions.value.$debounce;
|
|
1028
|
+
if (scopeState.$haveAnyAsyncRule.value) return DEFAULT_DEBOUNCE_TIME;
|
|
1029
|
+
return 0;
|
|
1017
1030
|
});
|
|
1018
1031
|
const $deepCompare = computed(() => {
|
|
1019
1032
|
if ($localOptions.value.$deepCompare != null) return $localOptions.value.$deepCompare;
|
|
@@ -1139,6 +1152,16 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1139
1152
|
const $haveAnyAsyncRule$1 = computed(() => {
|
|
1140
1153
|
return Object.values($rules.value).some((rule) => rule.$haveAsync);
|
|
1141
1154
|
});
|
|
1155
|
+
const $modifiers = computed(() => {
|
|
1156
|
+
return {
|
|
1157
|
+
$debounce: $debounce$1.value,
|
|
1158
|
+
$lazy: $lazy$1.value,
|
|
1159
|
+
$rewardEarly: $rewardEarly$1.value,
|
|
1160
|
+
$autoDirty: $autoDirty$1.value,
|
|
1161
|
+
$silent: $silent.value,
|
|
1162
|
+
$clearExternalErrorsOnChange: $clearExternalErrorsOnChange$1.value
|
|
1163
|
+
};
|
|
1164
|
+
});
|
|
1142
1165
|
function processShortcuts() {
|
|
1143
1166
|
if (shortcuts?.fields) Object.entries(shortcuts.fields).forEach(([key, value]) => {
|
|
1144
1167
|
const scope$1 = effectScope();
|
|
@@ -1200,7 +1223,8 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1200
1223
|
$dirty,
|
|
1201
1224
|
processShortcuts,
|
|
1202
1225
|
$silentValue,
|
|
1203
|
-
$inactive
|
|
1226
|
+
$inactive,
|
|
1227
|
+
$modifiers
|
|
1204
1228
|
};
|
|
1205
1229
|
});
|
|
1206
1230
|
define$watchState();
|
|
@@ -1346,7 +1370,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1346
1370
|
if (externalErrors?.value?.length) externalErrors.value = [];
|
|
1347
1371
|
}
|
|
1348
1372
|
if (!scopeState.$lazy.value && !scopeState.$dirty.value && !scopeState.$silent.value) $commitHandler();
|
|
1349
|
-
const { $shortcuts, $validating, $autoDirty, $rewardEarly, $clearExternalErrorsOnChange, $haveAnyAsyncRule, $debounce, $lazy
|
|
1373
|
+
const { $shortcuts, $validating, $autoDirty, $rewardEarly, $clearExternalErrorsOnChange, $haveAnyAsyncRule, $debounce, $lazy, ...restScope } = scopeState;
|
|
1350
1374
|
return reactive({
|
|
1351
1375
|
...restScope,
|
|
1352
1376
|
$externalErrors: externalErrors,
|
|
@@ -1365,6 +1389,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1365
1389
|
$extractDirtyFields,
|
|
1366
1390
|
$clearExternalErrors,
|
|
1367
1391
|
$abort,
|
|
1392
|
+
"~modifiers": scopeState.$modifiers,
|
|
1368
1393
|
...createStandardSchema($validate)
|
|
1369
1394
|
});
|
|
1370
1395
|
}
|
|
@@ -1643,6 +1668,16 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1643
1668
|
return true;
|
|
1644
1669
|
});
|
|
1645
1670
|
const $name = computed(() => fieldName);
|
|
1671
|
+
const $modifiers = computed(() => {
|
|
1672
|
+
return {
|
|
1673
|
+
$deepCompare: $localOptions.value.$deepCompare ?? false,
|
|
1674
|
+
$lazy: $localOptions.value.$lazy ?? false,
|
|
1675
|
+
$rewardEarly: $rewardEarly.value,
|
|
1676
|
+
$autoDirty: $autoDirty.value,
|
|
1677
|
+
$silent: $silent.value,
|
|
1678
|
+
$clearExternalErrorsOnChange: $localOptions.value.$clearExternalErrorsOnChange ?? false
|
|
1679
|
+
};
|
|
1680
|
+
});
|
|
1646
1681
|
function processShortcuts() {
|
|
1647
1682
|
if (shortcuts?.collections) Object.entries(shortcuts?.collections).forEach(([key, value]) => {
|
|
1648
1683
|
const scope$1 = effectScope();
|
|
@@ -1697,7 +1732,8 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1697
1732
|
$rewardEarly,
|
|
1698
1733
|
$silent,
|
|
1699
1734
|
$autoDirty,
|
|
1700
|
-
$issues
|
|
1735
|
+
$issues,
|
|
1736
|
+
$modifiers
|
|
1701
1737
|
};
|
|
1702
1738
|
});
|
|
1703
1739
|
if (immediateScopeState.isPrimitiveArray.value && rulesDef.value.$each) console.warn(`${path} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);
|
|
@@ -1791,7 +1827,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1791
1827
|
}
|
|
1792
1828
|
return dirtyFields;
|
|
1793
1829
|
}
|
|
1794
|
-
const { $shortcuts
|
|
1830
|
+
const { $shortcuts, ...restScopeState } = scopeState;
|
|
1795
1831
|
return reactive({
|
|
1796
1832
|
$self: $selfStatus,
|
|
1797
1833
|
...restScopeState,
|
|
@@ -1809,11 +1845,12 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1809
1845
|
$abort,
|
|
1810
1846
|
$extractDirtyFields,
|
|
1811
1847
|
$clearExternalErrors,
|
|
1848
|
+
"~modifiers": scopeState.$modifiers,
|
|
1812
1849
|
...createStandardSchema($validate)
|
|
1813
1850
|
});
|
|
1814
1851
|
}
|
|
1815
1852
|
|
|
1816
|
-
function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, rootRules, externalErrors, schemaErrors, rootSchemaErrors, validationGroups, initialState, originalState, fieldName
|
|
1853
|
+
function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, rootRules, externalErrors, schemaErrors, rootSchemaErrors, validationGroups, initialState, originalState, fieldName, ...commonArgs }) {
|
|
1817
1854
|
let scope = effectScope();
|
|
1818
1855
|
let scopeState;
|
|
1819
1856
|
let nestedScopes = [];
|
|
@@ -2232,7 +2269,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2232
2269
|
scopeState.$localPending.value = false;
|
|
2233
2270
|
}
|
|
2234
2271
|
}
|
|
2235
|
-
const { $shortcuts, $localPending: _$localPending
|
|
2272
|
+
const { $shortcuts, $localPending: _$localPending, ...restScopeState } = scopeState;
|
|
2236
2273
|
const fullStatus = reactive({
|
|
2237
2274
|
...restScopeState,
|
|
2238
2275
|
...$shortcuts,
|
|
@@ -2260,7 +2297,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2260
2297
|
/**
|
|
2261
2298
|
* Main resolver divider, will distribute the logic depending on the type of the current value (primitive, object, array)
|
|
2262
2299
|
*/
|
|
2263
|
-
function createReactiveChildrenStatus({ rulesDef
|
|
2300
|
+
function createReactiveChildrenStatus({ rulesDef, ...properties }) {
|
|
2264
2301
|
if (isCollectionRulesDef(rulesDef, properties.state, properties.schemaMode)) return createReactiveCollectionStatus({
|
|
2265
2302
|
rulesDef,
|
|
2266
2303
|
...properties
|
|
@@ -2280,7 +2317,7 @@ function createReactiveChildrenStatus({ rulesDef,...properties }) {
|
|
|
2280
2317
|
}, { deep: true });
|
|
2281
2318
|
return { fakeState };
|
|
2282
2319
|
});
|
|
2283
|
-
const { state: _state
|
|
2320
|
+
const { state: _state, ...restProperties } = properties;
|
|
2284
2321
|
return createReactiveNestedStatus({
|
|
2285
2322
|
rulesDef,
|
|
2286
2323
|
...restProperties,
|
|
@@ -2302,10 +2339,14 @@ const COLORS = {
|
|
|
2302
2339
|
text: 16777215,
|
|
2303
2340
|
bg: 16747520
|
|
2304
2341
|
},
|
|
2305
|
-
|
|
2342
|
+
CORRECT: {
|
|
2306
2343
|
text: 16777215,
|
|
2307
2344
|
bg: 1096065
|
|
2308
2345
|
},
|
|
2346
|
+
VALID: {
|
|
2347
|
+
text: 16777215,
|
|
2348
|
+
bg: 292951
|
|
2349
|
+
},
|
|
2309
2350
|
PENDING: {
|
|
2310
2351
|
text: 16777215,
|
|
2311
2352
|
bg: 16096779
|
|
@@ -2325,8 +2366,34 @@ const COLORS = {
|
|
|
2325
2366
|
INACTIVE: {
|
|
2326
2367
|
text: 0,
|
|
2327
2368
|
bg: 11581118
|
|
2369
|
+
},
|
|
2370
|
+
OPTIONAL: {
|
|
2371
|
+
text: 0,
|
|
2372
|
+
bg: 11581118
|
|
2328
2373
|
}
|
|
2329
2374
|
};
|
|
2375
|
+
const TOOLTIP_LABELS_FIELDS = {
|
|
2376
|
+
PRISTINE: "Field is not touched yet",
|
|
2377
|
+
DIRTY: "Field have been touched",
|
|
2378
|
+
ERROR: "Field has errors",
|
|
2379
|
+
CORRECT: "Field is dirty and all actives rules are valid",
|
|
2380
|
+
VALID: "Field rules are all valid",
|
|
2381
|
+
PENDING: "Field is pending",
|
|
2382
|
+
INACTIVE: "Field is inactive",
|
|
2383
|
+
OPTIONAL: "Field is not required"
|
|
2384
|
+
};
|
|
2385
|
+
const TOOLTIP_LABELS_NESTED = {
|
|
2386
|
+
DIRTY: "All nested fields have been touched",
|
|
2387
|
+
ERROR: "Some nested fields have errors",
|
|
2388
|
+
CORRECT: "All nested fields are correct",
|
|
2389
|
+
PENDING: "Some nested fields are pending"
|
|
2390
|
+
};
|
|
2391
|
+
const TOOLTIP_LABELS_RULES = {
|
|
2392
|
+
INACTIVE: "The rule is not active",
|
|
2393
|
+
INVALID: "Rule is invalid",
|
|
2394
|
+
VALID: "Rule is valid",
|
|
2395
|
+
PENDING: "Rule validator is pending"
|
|
2396
|
+
};
|
|
2330
2397
|
const PRIORITY_KEYS = {
|
|
2331
2398
|
ROOT: [
|
|
2332
2399
|
"$invalid",
|
|
@@ -2347,26 +2414,57 @@ const PRIORITY_KEYS = {
|
|
|
2347
2414
|
};
|
|
2348
2415
|
const INSPECTOR_IDS = {
|
|
2349
2416
|
INSPECTOR: "regle-inspector",
|
|
2417
|
+
COMPONENTS: "components",
|
|
2350
2418
|
TIMELINE: "regle-timeline"
|
|
2351
2419
|
};
|
|
2352
2420
|
|
|
2421
|
+
const regleSymbol = Symbol("regle");
|
|
2422
|
+
const regleRegistrySymbol = Symbol("regle-registry");
|
|
2423
|
+
|
|
2353
2424
|
function useRegleDevtoolsRegistry() {
|
|
2425
|
+
const loggedWarning = ref(false);
|
|
2426
|
+
const devtoolsApi = shallowRef();
|
|
2354
2427
|
const instances = shallowRef(/* @__PURE__ */ new Map());
|
|
2355
2428
|
const watchers = shallowRef(/* @__PURE__ */ new Map());
|
|
2356
|
-
|
|
2357
|
-
const
|
|
2429
|
+
const idCounters = shallowRef(/* @__PURE__ */ new Map());
|
|
2430
|
+
const looseIdCounter = ref(0);
|
|
2431
|
+
function setApi(api) {
|
|
2432
|
+
devtoolsApi.value = api;
|
|
2433
|
+
}
|
|
2358
2434
|
function register(r$, options) {
|
|
2359
|
-
const
|
|
2360
|
-
const
|
|
2435
|
+
const idPath = options?.filePath ?? "loose";
|
|
2436
|
+
const existingCounter = idCounters.value.get(idPath);
|
|
2437
|
+
const perComponentCounter = existingCounter ? existingCounter + 1 : 1;
|
|
2438
|
+
idCounters.value.set(idPath, perComponentCounter);
|
|
2439
|
+
const id = `${options?.uid?.toString() ?? "regle"}#${++looseIdCounter.value}`;
|
|
2440
|
+
const name = `r\$ #${options?.name ?? perComponentCounter}`;
|
|
2361
2441
|
instances.value.set(id, {
|
|
2362
2442
|
id,
|
|
2363
2443
|
name,
|
|
2364
2444
|
r$,
|
|
2365
|
-
componentName: options?.componentName ? `<${options.componentName}>` : void 0
|
|
2445
|
+
componentName: options?.componentName ? `<${options.componentName}>` : void 0,
|
|
2446
|
+
filePath: options?.filePath
|
|
2366
2447
|
});
|
|
2448
|
+
const stopHandle = watch(() => r$, () => notifyDevtools(), {
|
|
2449
|
+
deep: true,
|
|
2450
|
+
flush: "post"
|
|
2451
|
+
});
|
|
2452
|
+
regleDevtoolsRegistry.addWatcher(id, stopHandle);
|
|
2367
2453
|
notifyDevtools();
|
|
2368
2454
|
return id;
|
|
2369
2455
|
}
|
|
2456
|
+
function injectIframeRegistry(instance) {
|
|
2457
|
+
instances.value.set(instance.id, instance);
|
|
2458
|
+
const stopHandle = watch(() => instance.r$, () => notifyDevtools(), {
|
|
2459
|
+
deep: true,
|
|
2460
|
+
flush: "post"
|
|
2461
|
+
});
|
|
2462
|
+
regleDevtoolsRegistry.addWatcher(instance.id, stopHandle);
|
|
2463
|
+
notifyDevtools();
|
|
2464
|
+
}
|
|
2465
|
+
function notifyDevtools() {
|
|
2466
|
+
if (devtoolsApi.value) emitInspectorState(devtoolsApi.value);
|
|
2467
|
+
}
|
|
2370
2468
|
function unregister(id) {
|
|
2371
2469
|
instances.value.delete(id);
|
|
2372
2470
|
const watcher = watchers.value.get(id);
|
|
@@ -2388,50 +2486,48 @@ function useRegleDevtoolsRegistry() {
|
|
|
2388
2486
|
instances.value.clear();
|
|
2389
2487
|
notifyDevtools();
|
|
2390
2488
|
}
|
|
2391
|
-
function onInstancesChange(callback) {
|
|
2392
|
-
notifyCallbacks.value.add(callback);
|
|
2393
|
-
return () => {
|
|
2394
|
-
notifyCallbacks.value.delete(callback);
|
|
2395
|
-
};
|
|
2396
|
-
}
|
|
2397
2489
|
function addWatcher(id, stopHandle) {
|
|
2398
2490
|
watchers.value.set(id, stopHandle);
|
|
2399
2491
|
}
|
|
2400
|
-
function notifyDevtools() {
|
|
2401
|
-
notifyCallbacks.value.forEach((callback) => callback());
|
|
2402
|
-
}
|
|
2403
2492
|
return {
|
|
2404
2493
|
register,
|
|
2405
2494
|
unregister,
|
|
2406
2495
|
getAll,
|
|
2407
2496
|
get,
|
|
2408
2497
|
clear,
|
|
2409
|
-
|
|
2410
|
-
|
|
2498
|
+
addWatcher,
|
|
2499
|
+
setApi,
|
|
2500
|
+
notifyDevtools,
|
|
2501
|
+
injectIframeRegistry,
|
|
2502
|
+
loggedWarning
|
|
2411
2503
|
};
|
|
2412
2504
|
}
|
|
2413
2505
|
const regleDevtoolsRegistry = useRegleDevtoolsRegistry();
|
|
2506
|
+
/**
|
|
2507
|
+
* To be used by `useRegle` like composables.
|
|
2508
|
+
*/
|
|
2414
2509
|
function registerRegleInstance(r$, options) {
|
|
2415
2510
|
if (typeof window === "undefined") return;
|
|
2511
|
+
if (!inject(regleSymbol) && !regleDevtoolsRegistry.loggedWarning.value) {
|
|
2512
|
+
regleDevtoolsRegistry.loggedWarning.value = true;
|
|
2513
|
+
console.warn(`📏 Regle Devtools are not available. Install Regle plugin in your app to enable them. https://reglejs.dev/introduction/devtools`);
|
|
2514
|
+
return;
|
|
2515
|
+
}
|
|
2416
2516
|
const instance = getCurrentInstance();
|
|
2517
|
+
if (instance) instance.appContext.provides[regleRegistrySymbol] = regleDevtoolsRegistry;
|
|
2417
2518
|
const componentName = instance?.type?.name || instance?.type?.__name;
|
|
2519
|
+
let filePath;
|
|
2520
|
+
if (instance && instance.type && typeof instance.type === "object" && "__file" in instance.type) filePath = instance.type.__file;
|
|
2418
2521
|
const id = regleDevtoolsRegistry.register(r$, {
|
|
2419
2522
|
name: options?.name,
|
|
2420
2523
|
componentName,
|
|
2421
|
-
uid: instance?.uid
|
|
2524
|
+
uid: instance?.uid,
|
|
2525
|
+
filePath
|
|
2422
2526
|
});
|
|
2423
2527
|
tryOnScopeDispose(() => {
|
|
2424
2528
|
regleDevtoolsRegistry.unregister(id);
|
|
2425
2529
|
});
|
|
2426
2530
|
}
|
|
2427
|
-
function watchRegleInstance(id, r$, onChange) {
|
|
2428
|
-
const stopHandle = watch(() => r$, onChange, {
|
|
2429
|
-
deep: true,
|
|
2430
|
-
flush: "post"
|
|
2431
|
-
});
|
|
2432
|
-
regleDevtoolsRegistry.addWatcher(id, stopHandle);
|
|
2433
|
-
return stopHandle;
|
|
2434
|
-
}
|
|
2435
2531
|
|
|
2436
2532
|
function isMethod(value) {
|
|
2437
2533
|
return typeof value === "function";
|
|
@@ -2495,6 +2591,11 @@ function buildFieldState(fieldStatus) {
|
|
|
2495
2591
|
"$fields"
|
|
2496
2592
|
]);
|
|
2497
2593
|
if (remainingProperties.length > 0) state["Other Properties"] = remainingProperties;
|
|
2594
|
+
if (fieldStatus["~modifiers"]) state["Modifiers"] = Object.entries(fieldStatus["~modifiers"]).map(([key, value]) => ({
|
|
2595
|
+
key,
|
|
2596
|
+
value,
|
|
2597
|
+
editable: false
|
|
2598
|
+
}));
|
|
2498
2599
|
return state;
|
|
2499
2600
|
}
|
|
2500
2601
|
/**
|
|
@@ -2563,6 +2664,7 @@ function resolveFieldByPath(fields, path) {
|
|
|
2563
2664
|
const index = parseInt(segment);
|
|
2564
2665
|
if (!isNaN(index)) if (isCollectionRulesStatus(current) && Array.isArray(current.$each)) current = current.$each[index];
|
|
2565
2666
|
else return null;
|
|
2667
|
+
else if (isCollectionRulesStatus(current) && current.$self && current.$self) current = current.$self;
|
|
2566
2668
|
else if (isNestedRulesStatus(current) && current.$fields && current.$fields[segment]) current = current.$fields[segment];
|
|
2567
2669
|
else if (current[segment]) current = current[segment];
|
|
2568
2670
|
else return null;
|
|
@@ -2611,66 +2713,83 @@ function handleValidateAction(nodeId, api) {
|
|
|
2611
2713
|
}
|
|
2612
2714
|
emitInspectorState(api);
|
|
2613
2715
|
}
|
|
2614
|
-
function handleResetAction(nodeId, api, resetState = false) {
|
|
2716
|
+
async function handleResetAction(nodeId, api, resetState = false) {
|
|
2615
2717
|
const fieldInfo = parseFieldNodeId(nodeId);
|
|
2616
2718
|
if (fieldInfo) {
|
|
2617
2719
|
const { instanceId, fieldName } = fieldInfo;
|
|
2618
2720
|
const instance = regleDevtoolsRegistry.get(instanceId);
|
|
2619
2721
|
if (instance && instance.r$.$fields) {
|
|
2620
2722
|
const fieldStatus = resolveFieldByPath(instance.r$.$fields, fieldName);
|
|
2621
|
-
if (fieldStatus && typeof fieldStatus.$reset === "function") fieldStatus.$reset({
|
|
2723
|
+
if (fieldStatus && typeof fieldStatus.$reset === "function") fieldStatus.$reset({ toOriginalState: resetState });
|
|
2622
2724
|
}
|
|
2623
2725
|
} else {
|
|
2624
2726
|
const instance = regleDevtoolsRegistry.get(nodeId);
|
|
2625
|
-
if (instance && typeof instance.r$.$reset === "function") instance.r$.$reset({
|
|
2727
|
+
if (instance && typeof instance.r$.$reset === "function") instance.r$.$reset({ toOriginalState: resetState });
|
|
2626
2728
|
}
|
|
2627
|
-
emitInspectorState(api);
|
|
2628
2729
|
}
|
|
2629
|
-
function handleEditInspectorState(payload
|
|
2730
|
+
function handleEditInspectorState(payload) {
|
|
2630
2731
|
const { nodeId, path, state } = payload;
|
|
2631
2732
|
if (!path.includes("$value")) return;
|
|
2632
2733
|
if (!parseFieldNodeId(nodeId)) return;
|
|
2633
|
-
const [instanceId, _, fieldPath] = nodeId
|
|
2734
|
+
const [instanceId, _, fieldPath] = nodeId?.split(":");
|
|
2634
2735
|
const instance = regleDevtoolsRegistry.get(instanceId);
|
|
2635
2736
|
if (instance && instance.r$.$fields) {
|
|
2636
2737
|
const fieldStatus = resolveFieldByPath(instance.r$.$fields, fieldPath);
|
|
2637
2738
|
if (fieldStatus && "$value" in fieldStatus) fieldStatus.$value = state.value;
|
|
2638
2739
|
}
|
|
2639
|
-
emitInspectorState(api);
|
|
2640
2740
|
}
|
|
2641
|
-
function emitInspectorState(api) {
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
2645
|
-
}, 100);
|
|
2741
|
+
async function emitInspectorState(api) {
|
|
2742
|
+
api.sendInspectorState(INSPECTOR_IDS.INSPECTOR);
|
|
2743
|
+
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
2646
2744
|
}
|
|
2647
2745
|
|
|
2648
2746
|
function buildNodeTags(fieldOrR$, componentName) {
|
|
2649
2747
|
const tags = [];
|
|
2748
|
+
const isOptional = isFieldStatus(fieldOrR$) ? "required" in fieldOrR$.$rules && !fieldOrR$.$rules.required.$active : false;
|
|
2749
|
+
const isNestedOrCollection = isNestedRulesStatus(fieldOrR$) || isCollectionRulesStatus(fieldOrR$);
|
|
2650
2750
|
if (fieldOrR$.$error) tags.push({
|
|
2651
2751
|
label: "error",
|
|
2652
2752
|
textColor: COLORS.ERROR.text,
|
|
2653
|
-
backgroundColor: COLORS.ERROR.bg
|
|
2753
|
+
backgroundColor: COLORS.ERROR.bg,
|
|
2754
|
+
tooltip: isNestedOrCollection ? TOOLTIP_LABELS_NESTED.ERROR : TOOLTIP_LABELS_FIELDS.ERROR
|
|
2654
2755
|
});
|
|
2655
2756
|
else if (fieldOrR$.$correct) tags.push({
|
|
2656
2757
|
label: "correct",
|
|
2657
|
-
textColor: COLORS.
|
|
2658
|
-
backgroundColor: COLORS.
|
|
2758
|
+
textColor: COLORS.CORRECT.text,
|
|
2759
|
+
backgroundColor: COLORS.CORRECT.bg,
|
|
2760
|
+
tooltip: isNestedOrCollection ? TOOLTIP_LABELS_NESTED.CORRECT : TOOLTIP_LABELS_FIELDS.CORRECT
|
|
2659
2761
|
});
|
|
2660
2762
|
if (fieldOrR$.$pending) tags.push({
|
|
2661
2763
|
label: "pending",
|
|
2662
2764
|
textColor: COLORS.PENDING.text,
|
|
2663
|
-
backgroundColor: COLORS.PENDING.bg
|
|
2664
|
-
|
|
2765
|
+
backgroundColor: COLORS.PENDING.bg,
|
|
2766
|
+
tooltip: isNestedOrCollection ? TOOLTIP_LABELS_NESTED.PENDING : TOOLTIP_LABELS_FIELDS.PENDING
|
|
2767
|
+
});
|
|
2768
|
+
if (isOptional) {
|
|
2769
|
+
tags.push({
|
|
2770
|
+
label: "optional",
|
|
2771
|
+
textColor: COLORS.OPTIONAL.text,
|
|
2772
|
+
backgroundColor: COLORS.OPTIONAL.bg,
|
|
2773
|
+
tooltip: TOOLTIP_LABELS_FIELDS.OPTIONAL
|
|
2774
|
+
});
|
|
2775
|
+
if (!fieldOrR$.$invalid) tags.push({
|
|
2776
|
+
label: "valid",
|
|
2777
|
+
textColor: COLORS.VALID.text,
|
|
2778
|
+
backgroundColor: COLORS.VALID.bg,
|
|
2779
|
+
tooltip: TOOLTIP_LABELS_FIELDS.VALID
|
|
2780
|
+
});
|
|
2781
|
+
}
|
|
2665
2782
|
if (fieldOrR$.$dirty) tags.push({
|
|
2666
2783
|
label: "dirty",
|
|
2667
2784
|
textColor: COLORS.DIRTY.text,
|
|
2668
|
-
backgroundColor: COLORS.DIRTY.bg
|
|
2785
|
+
backgroundColor: COLORS.DIRTY.bg,
|
|
2786
|
+
tooltip: isNestedOrCollection ? TOOLTIP_LABELS_NESTED.DIRTY : TOOLTIP_LABELS_FIELDS.DIRTY
|
|
2669
2787
|
});
|
|
2670
2788
|
else if ("$rules" in fieldOrR$) tags.push({
|
|
2671
2789
|
label: "pristine",
|
|
2672
2790
|
textColor: COLORS.PRISTINE.text,
|
|
2673
|
-
backgroundColor: COLORS.PRISTINE.bg
|
|
2791
|
+
backgroundColor: COLORS.PRISTINE.bg,
|
|
2792
|
+
tooltip: TOOLTIP_LABELS_FIELDS.PRISTINE
|
|
2674
2793
|
});
|
|
2675
2794
|
if (componentName) tags.push({
|
|
2676
2795
|
label: componentName,
|
|
@@ -2684,22 +2803,26 @@ function buildRuleTags(rule) {
|
|
|
2684
2803
|
if (!rule.$active) tags.push({
|
|
2685
2804
|
label: "inactive",
|
|
2686
2805
|
textColor: COLORS.INACTIVE.text,
|
|
2687
|
-
backgroundColor: COLORS.INACTIVE.bg
|
|
2806
|
+
backgroundColor: COLORS.INACTIVE.bg,
|
|
2807
|
+
tooltip: TOOLTIP_LABELS_RULES.INACTIVE
|
|
2688
2808
|
});
|
|
2689
2809
|
else if (!rule.$valid) tags.push({
|
|
2690
2810
|
label: "invalid",
|
|
2691
2811
|
textColor: COLORS.INVALID.text,
|
|
2692
|
-
backgroundColor: COLORS.INVALID.bg
|
|
2812
|
+
backgroundColor: COLORS.INVALID.bg,
|
|
2813
|
+
tooltip: TOOLTIP_LABELS_RULES.INVALID
|
|
2693
2814
|
});
|
|
2694
2815
|
else if (rule.$valid) tags.push({
|
|
2695
2816
|
label: "valid",
|
|
2696
2817
|
textColor: COLORS.VALID.text,
|
|
2697
|
-
backgroundColor: COLORS.VALID.bg
|
|
2818
|
+
backgroundColor: COLORS.VALID.bg,
|
|
2819
|
+
tooltip: TOOLTIP_LABELS_RULES.VALID
|
|
2698
2820
|
});
|
|
2699
2821
|
if (rule.$pending) tags.push({
|
|
2700
2822
|
label: "pending",
|
|
2701
2823
|
textColor: COLORS.PENDING.text,
|
|
2702
|
-
backgroundColor: COLORS.PENDING.bg
|
|
2824
|
+
backgroundColor: COLORS.PENDING.bg,
|
|
2825
|
+
tooltip: TOOLTIP_LABELS_RULES.PENDING
|
|
2703
2826
|
});
|
|
2704
2827
|
return tags;
|
|
2705
2828
|
}
|
|
@@ -2737,6 +2860,16 @@ function buildCollectionItemNodes(fieldStatus, instanceId, fieldPath) {
|
|
|
2737
2860
|
});
|
|
2738
2861
|
}
|
|
2739
2862
|
});
|
|
2863
|
+
if (fieldStatus.$self && typeof fieldStatus.$self === "object" && !isEmpty(fieldStatus.$self.$rules)) {
|
|
2864
|
+
const itemTags = buildNodeTags(fieldStatus.$self);
|
|
2865
|
+
const itemPath = `${fieldPath}[$self]`;
|
|
2866
|
+
children.unshift({
|
|
2867
|
+
id: createFieldNodeId(instanceId, itemPath),
|
|
2868
|
+
label: "$self",
|
|
2869
|
+
tags: itemTags,
|
|
2870
|
+
children: buildRuleNodes(fieldStatus.$self, instanceId, itemPath)
|
|
2871
|
+
});
|
|
2872
|
+
}
|
|
2740
2873
|
return children;
|
|
2741
2874
|
}
|
|
2742
2875
|
function buildNestedFieldNodes(fields, instanceId, parentPath) {
|
|
@@ -2745,13 +2878,18 @@ function buildNestedFieldNodes(fields, instanceId, parentPath) {
|
|
|
2745
2878
|
if (fieldStatus && typeof fieldStatus === "object") {
|
|
2746
2879
|
const fieldPath = parentPath ? `${parentPath}.${fieldName}` : fieldName;
|
|
2747
2880
|
const fieldTags = buildNodeTags(fieldStatus);
|
|
2881
|
+
let isCollection = false;
|
|
2882
|
+
let isEmptyCollection = false;
|
|
2748
2883
|
let fieldChildren = [];
|
|
2749
|
-
if (isCollectionRulesStatus(fieldStatus))
|
|
2750
|
-
|
|
2884
|
+
if (isCollectionRulesStatus(fieldStatus)) {
|
|
2885
|
+
fieldChildren = buildCollectionItemNodes(fieldStatus, instanceId, fieldPath);
|
|
2886
|
+
isCollection = true;
|
|
2887
|
+
if (fieldChildren.length === 0) isEmptyCollection = true;
|
|
2888
|
+
} else if (isNestedRulesStatus(fieldStatus)) fieldChildren = buildNestedFieldNodes(fieldStatus.$fields, instanceId, fieldPath);
|
|
2751
2889
|
else if (isFieldStatus(fieldStatus)) fieldChildren = buildRuleNodes(fieldStatus, instanceId, fieldPath);
|
|
2752
2890
|
children.push({
|
|
2753
2891
|
id: createFieldNodeId(instanceId, fieldPath),
|
|
2754
|
-
label: `${fieldName}`,
|
|
2892
|
+
label: `${isCollection ? `${fieldName}[${fieldChildren.length}]` : fieldName}${isEmptyCollection ? " (empty)" : ""}`,
|
|
2755
2893
|
tags: fieldTags,
|
|
2756
2894
|
children: fieldChildren
|
|
2757
2895
|
});
|
|
@@ -2767,12 +2905,15 @@ function buildRootChildrenNodes(r$, instanceId) {
|
|
|
2767
2905
|
if (fieldStatus && typeof fieldStatus === "object") {
|
|
2768
2906
|
const fieldTags = buildNodeTags(fieldStatus);
|
|
2769
2907
|
let fieldChildren = [];
|
|
2770
|
-
|
|
2771
|
-
|
|
2908
|
+
let isCollection = false;
|
|
2909
|
+
if (isCollectionRulesStatus(fieldStatus)) {
|
|
2910
|
+
fieldChildren = buildCollectionItemNodes(fieldStatus, instanceId, fieldName);
|
|
2911
|
+
isCollection = true;
|
|
2912
|
+
} else if (isNestedRulesStatus(fieldStatus)) fieldChildren = buildNestedFieldNodes(fieldStatus.$fields, instanceId, fieldName);
|
|
2772
2913
|
else if (isFieldStatus(fieldStatus)) fieldChildren = buildRuleNodes(fieldStatus, instanceId, fieldName);
|
|
2773
2914
|
children.push({
|
|
2774
2915
|
id: createFieldNodeId(instanceId, fieldName),
|
|
2775
|
-
label: fieldName
|
|
2916
|
+
label: `${isCollection ? `${fieldName}[${fieldChildren.length}]` : fieldName}`,
|
|
2776
2917
|
tags: fieldTags,
|
|
2777
2918
|
children: fieldChildren
|
|
2778
2919
|
});
|
|
@@ -2808,48 +2949,53 @@ function filterInspectorTree(nodes, filter) {
|
|
|
2808
2949
|
return filtered;
|
|
2809
2950
|
}
|
|
2810
2951
|
|
|
2811
|
-
function createDevtools(app) {
|
|
2952
|
+
function createDevtools(app, isIframe = false) {
|
|
2812
2953
|
setupDevtoolsPlugin({
|
|
2813
2954
|
id: "regle-devtools",
|
|
2814
2955
|
label: "Regle",
|
|
2815
2956
|
logo: "https://reglejs.dev/logo_main.png",
|
|
2816
2957
|
packageName: "@regle/core",
|
|
2817
2958
|
homepage: "https://reglejs.dev",
|
|
2818
|
-
componentStateTypes: [],
|
|
2959
|
+
componentStateTypes: ["Regles"],
|
|
2819
2960
|
app
|
|
2820
2961
|
}, (api) => {
|
|
2962
|
+
regleDevtoolsRegistry.setApi(api);
|
|
2963
|
+
if (isIframe) {
|
|
2964
|
+
const iframeApp = Object.getOwnPropertySymbols(app._context.provides).find((symbol) => symbol.description === regleRegistrySymbol.description);
|
|
2965
|
+
if (iframeApp) for (const instance of app._context.provides[iframeApp].getAll()) regleDevtoolsRegistry.injectIframeRegistry(instance);
|
|
2966
|
+
}
|
|
2821
2967
|
api.addInspector({
|
|
2822
2968
|
id: INSPECTOR_IDS.INSPECTOR,
|
|
2823
2969
|
label: "Regle",
|
|
2824
2970
|
noSelectionText: "No instance selected",
|
|
2825
2971
|
icon: "rule",
|
|
2826
|
-
treeFilterPlaceholder: "Filter",
|
|
2972
|
+
treeFilterPlaceholder: "Filter state",
|
|
2827
2973
|
stateFilterPlaceholder: "Filter validation status",
|
|
2828
2974
|
nodeActions: [
|
|
2829
2975
|
{
|
|
2830
2976
|
icon: "check_circle",
|
|
2831
|
-
tooltip: "Validate
|
|
2977
|
+
tooltip: "Validate",
|
|
2832
2978
|
action: (nodeId) => {
|
|
2833
2979
|
handleValidateAction(nodeId, api);
|
|
2834
2980
|
}
|
|
2835
2981
|
},
|
|
2836
2982
|
{
|
|
2837
2983
|
icon: "refresh",
|
|
2838
|
-
tooltip: "Reset validation state
|
|
2984
|
+
tooltip: "Reset validation state",
|
|
2839
2985
|
action: (nodeId) => {
|
|
2840
2986
|
handleResetAction(nodeId, api);
|
|
2841
2987
|
}
|
|
2842
2988
|
},
|
|
2843
2989
|
{
|
|
2844
2990
|
icon: "restore",
|
|
2845
|
-
tooltip: "Restore to
|
|
2991
|
+
tooltip: "Restore to original state",
|
|
2846
2992
|
action: (nodeId) => {
|
|
2847
2993
|
handleResetAction(nodeId, api, true);
|
|
2848
2994
|
}
|
|
2849
2995
|
}
|
|
2850
2996
|
]
|
|
2851
2997
|
});
|
|
2852
|
-
|
|
2998
|
+
regleDevtoolsRegistry.notifyDevtools();
|
|
2853
2999
|
let componentInstances = [];
|
|
2854
3000
|
let selectedNodeId = null;
|
|
2855
3001
|
api.on.getInspectorTree(async (payload) => {
|
|
@@ -2870,7 +3016,7 @@ function createDevtools(app) {
|
|
|
2870
3016
|
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
2871
3017
|
const state = buildInspectorState(payload.nodeId, (id) => regleDevtoolsRegistry.get(id));
|
|
2872
3018
|
const instance = componentInstances.find((instance$1) => {
|
|
2873
|
-
const [componentName] = payload.nodeId
|
|
3019
|
+
const [componentName] = payload.nodeId?.split("#");
|
|
2874
3020
|
return instance$1.uid.toString() === componentName;
|
|
2875
3021
|
});
|
|
2876
3022
|
if (instance?.uid && selectedNodeId !== payload.nodeId) {
|
|
@@ -2882,33 +3028,10 @@ function createDevtools(app) {
|
|
|
2882
3028
|
}
|
|
2883
3029
|
});
|
|
2884
3030
|
api.on.editInspectorState((payload) => {
|
|
2885
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload
|
|
3031
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload);
|
|
2886
3032
|
});
|
|
2887
3033
|
});
|
|
2888
3034
|
}
|
|
2889
|
-
function setupInstanceWatchers(api) {
|
|
2890
|
-
const watchedInstances = /* @__PURE__ */ new Set();
|
|
2891
|
-
const setupWatchers = () => {
|
|
2892
|
-
regleDevtoolsRegistry.getAll().forEach((instance) => {
|
|
2893
|
-
const { r$, id } = instance;
|
|
2894
|
-
if (watchedInstances.has(id)) return;
|
|
2895
|
-
const stopHandle = watchRegleInstance(id, r$, () => {
|
|
2896
|
-
api.sendInspectorState(INSPECTOR_IDS.INSPECTOR);
|
|
2897
|
-
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
2898
|
-
});
|
|
2899
|
-
regleDevtoolsRegistry.addWatcher(id, stopHandle);
|
|
2900
|
-
watchedInstances.add(id);
|
|
2901
|
-
});
|
|
2902
|
-
};
|
|
2903
|
-
setupWatchers();
|
|
2904
|
-
regleDevtoolsRegistry.onInstancesChange(() => {
|
|
2905
|
-
const currentIds = new Set(regleDevtoolsRegistry.getAll().map((i) => i.id));
|
|
2906
|
-
for (const id of watchedInstances) if (!currentIds.has(id)) watchedInstances.delete(id);
|
|
2907
|
-
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
2908
|
-
api.sendInspectorState(INSPECTOR_IDS.INSPECTOR);
|
|
2909
|
-
setupWatchers();
|
|
2910
|
-
});
|
|
2911
|
-
}
|
|
2912
3035
|
|
|
2913
3036
|
function useRootStorage({ initialState, originalState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode = false, onValidate }) {
|
|
2914
3037
|
const storage = useStorage();
|
|
@@ -3371,7 +3494,7 @@ function createUseCollectScope(instances, options) {
|
|
|
3371
3494
|
function createUseScopedRegleComposable(instances, customUseRegle) {
|
|
3372
3495
|
const scopedUseRegle = customUseRegle ?? useRegle;
|
|
3373
3496
|
const useScopedRegle$1 = ((state, rulesFactory, options) => {
|
|
3374
|
-
const { namespace, scopeKey: _scopeKey
|
|
3497
|
+
const { namespace, scopeKey: _scopeKey, ...restOptions } = options ?? {};
|
|
3375
3498
|
scopedUseRegle.__config ??= {};
|
|
3376
3499
|
const computedNamespace = computed(() => toValue(namespace));
|
|
3377
3500
|
const $id = ref(`${Object.keys(instances.value).length + 1}-${randomId()}`);
|
|
@@ -3528,13 +3651,24 @@ function refineRules(rules, refinement) {
|
|
|
3528
3651
|
return (state) => merge({ ...rules }, refinement(state));
|
|
3529
3652
|
}
|
|
3530
3653
|
|
|
3531
|
-
var version$1 = "1.11.0-beta.
|
|
3532
|
-
|
|
3533
|
-
const regleSymbol = Symbol("regle");
|
|
3654
|
+
var version$1 = "1.11.0-beta.4";
|
|
3534
3655
|
|
|
3535
3656
|
const RegleVuePlugin = { install(app) {
|
|
3536
3657
|
app.provide(regleSymbol, version$1);
|
|
3537
|
-
if (typeof window !== "undefined" && true)
|
|
3658
|
+
if (typeof window !== "undefined" && true) {
|
|
3659
|
+
window.addEventListener("message", (event) => {
|
|
3660
|
+
window.VUE_DEVTOOLS_CONFIG = { defaultSelectedAppId: "repl" };
|
|
3661
|
+
if (event.data.event === "regle-devtools-repl") {
|
|
3662
|
+
const iframeApp = document.querySelector("iframe")?.contentWindow?.document.querySelector("[data-v-app]")?.__vue_app__;
|
|
3663
|
+
if (iframeApp) {
|
|
3664
|
+
const map = iframeApp.__VUE_DEVTOOLS_NEXT_APP_RECORD__.instanceMap;
|
|
3665
|
+
for (const [key] of map) if (key == null) map.delete(key);
|
|
3666
|
+
createDevtools(iframeApp, true);
|
|
3667
|
+
}
|
|
3668
|
+
}
|
|
3669
|
+
});
|
|
3670
|
+
createDevtools(app);
|
|
3671
|
+
}
|
|
3538
3672
|
} };
|
|
3539
3673
|
|
|
3540
3674
|
export { InternalRuleType, RegleVuePlugin, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
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={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function 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,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function 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];if(w(e)&&w(t)&&s&&(r||!r&&n)&&!k(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var A=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function j(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{if(n.aborted){r(new A);return}function i(){r(new A)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new A):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new A):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const M={Inline:`__inline`,Async:`__async`};function N(e,t){return e.some(e=>t?e?.[t]:!1)}function P(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function F(e){try{return e.map(e=>p(e))}catch{return[]}}function I(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function L(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function R(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===M.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...F(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:F(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:F(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:F(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...F(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:I(t),_brand:x})}function z(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=R({...e,async:n},...t);if(L(e.validator)>1){let t=function(...t){return R(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 B(e){return w(e.value)}function V(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const H={LessThan:-1,EqualTo:0,GreaterThan:1};function U(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 H.GreaterThan;if(i>t)return H.LessThan;if(!isNaN(t)&&isNaN(i))return H.GreaterThan;if(isNaN(t)&&!isNaN(i))return H.LessThan}return H.EqualTo}const W=U(g,`3.5.0`)!==-1;function G(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?G():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ee(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)),!0),r))}function J(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=F(i._params),n=F(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function Y(e,t){return B(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>Z(t)||typeof t==`function`)}function te(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)||B(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 ne(e){return w(e)&&`$fields`in e}function re(e){return!!e&&`$rules`in e}function ie({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function ae({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 oe(e){return w(e)&&`$each`in e}function $(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(oe(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>se(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>se(t,n,[e])).flat()}function se(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(oe(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>se(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>se(n,t,r?.concat(e))).flat()}function ce({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>Z(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.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),S=e(()=>Q(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:F(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:e(()=>`${o}.${_.value}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();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,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,Z(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$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,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$reset:D})}function le(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:$(i,{includePath:!0})}}}}}function ue({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:T,shortcuts:E,onValidate:A}){let M=t(),N,P=[],F,I,L,R,z=()=>{},B,V=u(!1);function H(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Y.value=s,K();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,ce({modifiers:{$silent:N.$silent,$rewardEarly:N.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(u),N.processShortcuts(),U(),t?.valid!=null&&(N.$dirty.value=c.getDirtyState(o),(N.$dirty.value&&!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&z()),c.addRuleDeclEntry(o,e)}function U(){z=N.$debounce.value||N.$haveAnyAsyncRule.value?O(q,N.$debounce.value??(N.$haveAnyAsyncRule?200:0),{trackDebounceRef:V}):q}function G(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();I(),R?.(),N.$dirty.value&&c.setDirtyEntry(o,N.$dirty.value),F?.(),M.stop(),M=t();for(let e of P)e.stop();P=[],y?.(),L?.()}function K(){if(J.value)for(let e of Object.values(J.value))e.$watch();N=M.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>Y.value.$debounce),f=e(()=>Y.value.$deepCompare==null?!1:Y.value.$deepCompare),_=e(()=>Y.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):Y.value.$lazy),y=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Y.value.$rewardEarly),x=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):Y.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Y.value.$silent),w=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Y.value.$autoDirty),T=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),O=e({get:()=>n.value,set(e){F(),n.value=e,ee()}}),A=e(()=>V.value?U.value&&i.value:U.value&&!H.value&&i.value),j=e(()=>ie({field:{$rules:J.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),M=e(()=>ie({field:{$rules:J.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),N=e(()=>j.value.map(e=>e.$message)),I=e(()=>M.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,Y.value.$deepCompare):S.value!==n.value:!1),R=e(()=>L.value),z=e(()=>ae({field:{$rules:J.value}})),B=e(()=>(C.value||o.value)&&!(U.value||H.value)),H=e(()=>a.value||!y.value?Object.entries(J.value).some(([e,t])=>t.$pending):!1),U=e(()=>m?.value&&!Array.isArray(m?.value)&&`$self`in m.value?m?.value.$self?.length>0:p?.value?.length||m?.value?.length?!0:G.value?!1:Object.values(J.value).some(e=>!e.$valid||e.$maybePending)),W=e(()=>s),G=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),K=e(()=>{if(p?.value?.length||G.value||V.value)return!1;if(i.value&&!b(n.value)&&!T.value&&!H.value){if(g)return!m?.value?.length;{let e=Object.values(J.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),q=e(()=>Object.values(J.value).some(e=>e.$haveAsync));function te(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();X[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:O,$rules:J,$error:A,$pending:H,$invalid:U,$correct:K,$errors:N,$ready:B,$silentErrors:I,$anyDirty:o,$tooltips:z,$name:W,$inactive:G,$edited:L,$anyEdited:R}))}),e}),P.push(a)})}let X={};return{$error:A,$pending:H,$invalid:U,$correct:K,$debounce:c,$deepCompare:f,$lazy:_,$ready:B,$issues:j,$silentIssues:M,$errors:N,$silentErrors:I,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:q,$shortcuts:X,$validating:T,$tooltips:z,$dirty:i,processShortcuts:te,$silentValue:O,$inactive:G}}),ee(),I=_(N.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),R=_([N.$error,N.$correct,N.$invalid,N.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=N.$error.value,e.$fieldInvalid=N.$invalid.value,e.$fieldPending=N.$pending.value,e.$fieldCorrect=N.$correct.value})}),L=_(N.$haveAnyAsyncRule,U)}function ee(){F=_(n,()=>{N.$autoDirty.value&&!N.$silent.value&&(N.$dirty.value||(N.$dirty.value=!0)),r.value instanceof Function&&H(),(!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&z(),N.$clearExternalErrorsOnChange.value&&$()},{deep:x?!0:W?1:!0})}async function q(){try{let{promise:e}=Z(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=u({}),Y=u({});H();function te(e,t){if(X(),$(),N.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else 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&&$(),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!N.$lazy.value&&!N.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse()}function X(){`cancel`in z&&z.cancel()}function Z(e){return B&&B.abort(),B=j(e),B}function Q(){X(),B&&B.abort()}function ne(e=!0,t=!1){N.$dirty.value||(N.$dirty.value=!0),t&&e?(!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&(X(),z()):e&&(X(),z())}async function re(e){try{if(e&&(n.value=e),g)return A?(ne(!1),A()):{valid:!1,data:n.value,errors:N.$errors.value,issues:N.$issues.value};let t=n.value;if(!N.$dirty.value)N.$dirty.value=!0;else if(!N.$silent.value&&N.$dirty.value&&!N.$pending.value&&!V.value&&!N.$haveAnyAsyncRule.value)return{valid:!N.$error.value,data:t,errors:N.$errors.value,issues:N.$issues.value};if(g)return{valid:!m?.value?.length,data:t,errors:N.$errors.value,issues:N.$issues.value};if(b(J.value))return{valid:!0,data:t,errors:N.$errors.value,issues:N.$issues.value};Q();let{promise:r}=Z(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:N.$errors.value,issues:N.$issues.value}}catch{return{valid:!1,data:n.value,errors:N.$errors.value,issues:N.$issues.value}}}function oe(e=!0){return N.$dirty.value?n.value:e?{_null:!0}:null}function $(){p?.value?.length&&(p.value=[])}!N.$lazy.value&&!N.$dirty.value&&!N.$silent.value&&q();let{$shortcuts:se,$validating:ue,$autoDirty:de,$rewardEarly:fe,$clearExternalErrorsOnChange:pe,$haveAnyAsyncRule:me,$debounce:he,$lazy:ge,..._e}=N;return l({..._e,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:J,...se,$path:a,$isDebouncing:V,$reset:te,$touch:ne,$validate:re,$unwatch:G,$watch:K,$extractDirtyFields:oe,$clearExternalErrors:$,$abort:Q,...le(re)})}function de({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_}){let v=s.value?.$id??l.$key??K(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=me({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),C}function fe({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,originalState:g,shortcuts:y,fieldName:x}){let S=t(),w,T=t(),E,D=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let O=u(),k=u(n.value),A=u({}),j,M,N=u({}),P=o.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Z(e)||typeof e==`function`):!1:!1)})),F(),z();function F(){A.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(O.value=K(),Object.defineProperties(n.value,{$id:{value:O.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(O.value=n.value.$id)),k.value=N.value.$value,Array.isArray(n.value)&&!E.isPrimitiveArray.value?P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=V(r.value.$each,f(()=>t),n);l&&D.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each);return de({$id:O.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}).filter(e=>!!e):P.value=[],N.value=ue({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,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})}function I(){if(Array.isArray(n.value)&&!E.isPrimitiveArray.value){let t=C(P.value);P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&P.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(O.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=V(r.value.$each,l,n);t&&D.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]);return de({$id:O.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),originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(O.value,t.toString())})}else P.value=[]}function L(){j=_(n,()=>{M?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!O.value?F():I(),R()},{deep:W?1:!0,flush:`pre`}),R()}function R(){M=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&N.value.$touch(!1,!0)},{flush:`post`})}function z(){L(),S=t(),w=S.run(()=>{let r=e({get:()=>n.value,set(e){j?.(),M?.(),n.value=e,L()}}),i=e(()=>N.value.$dirty&&(!P.value.length||P.value.every(e=>e.$dirty))),o=e(()=>N.value.$anyDirty||P.value.some(e=>e.$anyDirty)),c=e(()=>N.value.$invalid||P.value.some(e=>e.$invalid)),d=e(()=>(b(N.value.$rules)?!0:N.value.$correct)&&(!P.value.length||P.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>N.value.$error||P.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>N.value.$pending||P.value.some(e=>e.$pending)),S=e(()=>!!P.value.length&&P.value.every(e=>e.$edited)),C=e(()=>N.value.$anyEdited||P.value.some(e=>e.$anyEdited)),w=e(()=>({$self:N.value.$issues,$each:P.value.map(e=>e.$issues)})),T=e(()=>({$self:N.value.$errors,$each:P.value.map(e=>e.$errors)})),E=e(()=>({$self:N.value.$silentErrors,$each:P.value.map(e=>e.$silentErrors)})),O=e(()=>A.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):A.value.$rewardEarly),k=e(()=>O.value?!0:A.value.$silent==null?h(s.silent)==null?!1:h(s.silent):A.value.$silent),F=e(()=>A.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):A.value.$autoDirty),I=e(()=>x);function R(){y?.collections&&Object.entries(y?.collections).forEach(([e,s])=>{let h=t();z[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:T,$silentErrors:E,$initialValue:m,$originalValue:g,$ready:p,$anyDirty:o,$name:I,$each:P,$self:N,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),D.push(h)})}let z={};return R(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:I,$shortcuts:z,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:O,$silent:k,$autoDirty:F,$issues:w}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function B(){j?.(),N.value&&N.value.$unwatch(),P.value&&P.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),S.stop(),S=t(),T.stop(),T=t(!0),D.forEach(e=>e.stop()),D=[]}function H(e=!0,t=!1){N.value.$touch(e,t),P.value.forEach(n=>{n.$touch(e,t)})}function U(e,t){if(B(),!t)if(e?.toOriginalState)n.value=C(g),m.value=C(g);else 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&&q(),e?.keepValidationState||(N.value.$reset(e,t),P.value.forEach(t=>{t.$reset(e,!0)})),t||F()}function G(){N.value.$abort(),P.value.forEach(e=>{e.$abort()})}async function ee(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([N.value.$validate(e),...P.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function q(){N.value.$clearExternalErrors(),P.value.forEach(e=>{e.$clearExternalErrors()})}function J(e=!0){let t=P.value.map(t=>{if(ne(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:Y,...te}=w;return l({$self:N,...te,...Y,$path:a,$each:P,$value:n,$initialValue:m,$originalValue:g,$validate:ee,$unwatch:B,$watch:z,$touch:H,$reset:U,$abort:G,$extractDirtyFields:J,$clearExternalErrors:q,...le(ee)})}function pe({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),T,E=[],D=null,O=null,k=null,A=null;async function j(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,me({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,me({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t);return[t,me({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,me({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));M.value={...l,...u,...d,...p},t&&L()}let M=x.storage.getFieldsEntry(a);j();function F(){s&&(k=_(s,()=>{R(),j()},{deep:!0}))}function I(){A=_(r,()=>{R(),j(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(D?.(),D=_(o,()=>{R(),j()},{deep:!0,flush:`pre`}),F()),d&&(O?.(),O=_(d,()=>{R(),j()},{deep:!0,flush:`post`})),I(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,j(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,j()}}),o=e(()=>{let e=M.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=M.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=M.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(M.value).reduce((e,[t,n])=>((!re(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>re(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct):!1}),f=e(()=>{let e=M.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=M.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$silentErrors;return e}),F=e(()=>{if(!Object.keys(M.value).length)return!1;for(let e in M.value)if(!M.value[e]?.$edited)return!1;return!0}),I=e(()=>{for(let e in M.value)if(M.value[e]?.$anyEdited)return!0;return!1}),L=e(()=>y),z=e(()=>({autoDirty:S.value,lazy:h(x.options.lazy)??!1,rewardEarly:_.value,silent:b.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function B(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();U[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:L,$silentErrors:A,$initialValue:m,$errors:k,$fields:M,$edited:F,$anyEdited:I,$issues:O,"~modifiers":h(x.options)}))}),e}),E.push(p)})}let H=e({get:()=>p?Object.fromEntries(Object.entries(p?.(M.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,N(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,P(t,e)]))}]:[])):{},set(){}}),U={};return B(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:L,$shortcuts:U,$groups:H,$silentValue:a,$edited:F,$anyEdited:I,$localPending:w,$autoDirty:S,$silent:b,$value:n,$modifiers:z}})}function R(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},M.value)for(let e of Object.values(M.value))e?.$unwatch()}function z(){let e=M.value;for(let t of Object.values(e))t.$clearExternalErrors()}function B(e,t){if(k?.(),R(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else 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);if(!e?.keepValidationState)for(let t of Object.values(M.value))t?.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||j()}function V(e=!0,t=!1){for(let n of Object.values(M.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(M.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(M.value))e.$abort()}async function G(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value};{let e=r.value;return W(),{valid:(await Promise.allSettled(Object.values(M.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e,errors:T.$errors.value,issues:T.$issues.value}}}catch{return{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value}}finally{T.$localPending.value=!1}}let{$shortcuts:K,$localPending:ee,...q}=T,J=l({...q,...K,$path:i,$initialValue:m,$originalValue:g,$fields:M,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,...o?{"~modifiers":T.$modifiers}:{},...le(G)});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete J[e];for(let e of Object.values(M.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function me({rulesDef:e,...n}){if(te(e,n.state,n.schemaMode))return fe({rulesDef:e,...n});if(Y(n.state,e)){if(B(n.state))return pe({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return pe({rulesDef:e,...a,state:r.fakeState})}}else if(X(e))return ue({rulesDef:i(e.value)?e.value:e,...n})}function he({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=J(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),Y(a,i)?h.value=pe({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):X(i)&&(h.value=ue({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch(),y?.(),v?.()}),l({regle:h})}function ge({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s}){let c=i(n)?n:typeof n==`function`?void 0:e(()=>n),l={...a,...r},f,p=d(c??{});typeof n==`function`&&(f=v(()=>{p.value=n(t),m(p)}));let h=u(w(t.value)?{...C(t.value)}:C(t.value)),g=w(t.value)?{...C(t.value)}:C(t.value);return ee(()=>{f?.()}),he({scopeRules:p,state:t,options:l,initialState:h,originalState:g,customRules:o,shortcuts:s})}function _e(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(t,a,o){return{r$:ge({state:i(t)?t:u(t),rulesFactory:a,options:o,globalOptions:r,customRules:e,shortcuts:n}).regle}}return a}const ve=_e();function ye(){function e(e,t){return t}return e}const be=ye();function xe(e){let t={};if(Object.entries(e).some(([e,t])=>Z(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&w(r)&&`$each`in r&&r.$each&&w(r.$each)?t[n]=[xe(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>Z(t)||typeof t==`function`)?t[n]=xe(r):t[n]=null}return t}function Se(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o){let s=i(n)?n:typeof n==`function`?void 0:e(()=>n);return ge({state:u(xe(s?.value)),rulesFactory:s,options:o,globalOptions:a,customRules:t,shortcuts:r}).regle}return o}const Ce=Se();function we({rules:e,modifiers:t,shortcuts:n}){let r=_e(e,t,n),i=Se(e,t,n);return r.__config={rules:e,modifiers:t,shortcuts:n},i.__config={rules:e,modifiers:t,shortcuts:n},{useRegle:r,inferRules:ye(),useRules:i}}function Te(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=_e(a,o,s);return c.__config={rules:a,modifiers:o,shortcuts:s},{useRegle:c,inferRules:ye()}}function Ee(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),v=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),y=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),b=e(()=>r?Object.values(t):t);function x(e){Object.values(t).forEach(t=>{t.$reset(e)})}function S(){Object.values(t).forEach(e=>{e.$touch()})}function C(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function w(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function T(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}return l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:b,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:y,$reset:x,$touch:S,$validate:T,$extractDirtyFields:C,$clearExternalErrors:w})}function De(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){return i.value?Ee(e[i.value]??{},!n.asRecord):Ee(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function Oe(t,r){let i=r??ve;return{useScopedRegle:((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}-${K()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),ee(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}})}}function ke(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(()=>u({"~~global":{}})))(),{useScopedRegle:n}=Oe(t,e?.customUseRegle),{useCollectScope:r}=De(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:Ae,useScopedRegle:je}=ke();function Me(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Z(t))return h(t._params?.[0])===i.value}})||r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function Ne(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Pe(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),Ne(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Fe(e){return e}function Ie(e,t){return n=>T({...e},t(n))}var Le=`1.11.0-beta.2`;const Re=Symbol(`regle`),ze={install(e){e.provide(Re,Le)}};export{M as InternalRuleType,ze as RegleVuePlugin,z as createRule,ke as createScopedUseRegle,Me as createVariant,we as defineRegleConfig,Fe as defineRules,Te as extendRegleConfig,$ as flatErrors,be as inferRules,Ee as mergeRegles,Ne as narrowVariant,Ie as refineRules,F as unwrapRuleParameters,Ae as useCollectScope,ve as useRegle,he as useRootStorage,Ce as useRules,je as useScopedRegle,Pe 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:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function 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,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function 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];if(w(e)&&w(t)&&s&&(r||!r&&n)&&!k(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var A=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function j(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{if(n.aborted){r(new A);return}function i(){r(new A)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new A):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new A):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const M={Inline:`__inline`,Async:`__async`};function N(e,t){return e.some(e=>t?e?.[t]:!1)}function P(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function F(e){try{return e.map(e=>p(e))}catch{return[]}}function I(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function L(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function R(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===M.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...F(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:F(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:F(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:F(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...F(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:I(t),_brand:x})}function z(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=R({...e,async:n},...t);if(L(e.validator)>1){let t=function(...t){return R(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 B(e){return w(e.value)}function V(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const H={LessThan:-1,EqualTo:0,GreaterThan:1};function U(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 H.GreaterThan;if(i>t)return H.LessThan;if(!isNaN(t)&&isNaN(i))return H.GreaterThan;if(isNaN(t)&&!isNaN(i))return H.LessThan}return H.EqualTo}const W=U(g,`3.5.0`)!==-1;function G(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?G():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function q(e){return r()?(c(e),!0):!1}function J(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function Y(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=F(i._params),n=F(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function X(e,t){return B(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>Q(t)||typeof t==`function`)}function ee(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 Z(e){return!!e.value&&(w(e.value)||B(e.value))}function Q(e){return w(e)&&`_validator`in e}function $(e){return typeof e.value==`function`?`_validator`in e.value:!0}function te(e){return w(e)&&`$fields`in e}function ne(e){return!!e&&`$rules`in e}function re({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function ie({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 ae(e){return w(e)&&`$each`in e}function oe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ae(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>se(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>se(t,n,[e])).flat()}function se(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(ae(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>se(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>se(n,t,r?.concat(e))).flat()}function ce({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>Q(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.value})),p=e(()=>{try{return $(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),$(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>$(r)&&r.value.type?r.value.type:i),S=e(()=>$(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:F(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:e(()=>`${o}.${_.value}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();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,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,Q(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$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,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$reset:D})}function le(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:oe(i,{includePath:!0})}}}}}function ue({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:T,shortcuts:E,onValidate:A}){let M=t(),N,P=[],F,I,L,R,z=()=>{},B,V=u(!1);function H(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);X.value=s,K();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,ce({modifiers:{$silent:N.$silent,$rewardEarly:N.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:X.value.$debounce})])}Y.value=Object.fromEntries(u),N.processShortcuts(),U(),t?.valid!=null&&(N.$dirty.value=c.getDirtyState(o),(N.$dirty.value&&!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&z()),c.addRuleDeclEntry(o,e)}function U(){z=N.$debounce.value>0?O(J,N.$debounce.value,{trackDebounceRef:V}):J}function G(){if(Y.value)for(let e of Object.values(Y.value))e.$unwatch();I(),R?.(),N.$dirty.value&&c.setDirtyEntry(o,N.$dirty.value),F?.(),M.stop(),M=t();for(let e of P)e.stop();P=[],y?.(),L?.()}function K(){if(Y.value)for(let e of Object.values(Y.value))e.$watch();N=M.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>X.value.$debounce==null?N.$haveAnyAsyncRule.value?200:0:X.value.$debounce),f=e(()=>X.value.$deepCompare==null?!1:X.value.$deepCompare),_=e(()=>X.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):X.value.$lazy),y=e(()=>X.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):X.value.$rewardEarly),x=e(()=>X.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!C.value:h(d.clearExternalErrorsOnChange):X.value.$clearExternalErrorsOnChange),C=e(()=>y.value?!0:X.value.$silent==null?h(d.silent)==null?!1:h(d.silent):X.value.$silent),w=e(()=>X.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):X.value.$autoDirty),T=e(()=>{for(let e of Object.values(Y.value))if(e.$validating)return!0;return!1}),O=e({get:()=>n.value,set(e){F(),n.value=e,q()}}),A=e(()=>V.value?W.value&&i.value:W.value&&!U.value&&i.value),j=e(()=>re({field:{$rules:Y.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s}})),M=e(()=>re({field:{$rules:Y.value,$error:A.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:s},silent:!0})),I=e(()=>j.value.map(e=>e.$message)),L=e(()=>M.value.map(e=>e.$message)),R=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,X.value.$deepCompare):S.value!==n.value:!1),z=e(()=>R.value),B=e(()=>ie({field:{$rules:Y.value}})),H=e(()=>(C.value||o.value)&&!(W.value||U.value)),U=e(()=>a.value||!y.value?Object.entries(Y.value).some(([e,t])=>t.$pending):!1),W=e(()=>m?.value&&!Array.isArray(m?.value)&&`$self`in m.value?m?.value.$self?.length>0:p?.value?.length||m?.value?.length?!0:K.value?!1:Object.values(Y.value).some(e=>!e.$valid||e.$maybePending)),G=e(()=>s),K=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),J=e(()=>{if(p?.value?.length||K.value||V.value)return!1;if(i.value&&!b(n.value)&&!T.value&&!U.value){if(g)return!m?.value?.length;{let e=Object.values(Y.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),ee=e(()=>Object.values(Y.value).some(e=>e.$haveAsync)),Z=e(()=>({$debounce:c.value,$lazy:_.value,$rewardEarly:y.value,$autoDirty:w.value,$silent:C.value,$clearExternalErrorsOnChange:x.value}));function Q(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();$[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:O,$rules:Y,$error:A,$pending:U,$invalid:W,$correct:J,$errors:I,$ready:H,$silentErrors:L,$anyDirty:o,$tooltips:B,$name:G,$inactive:K,$edited:R,$anyEdited:z}))}),e}),P.push(a)})}let $={};return{$error:A,$pending:U,$invalid:W,$correct:J,$debounce:c,$deepCompare:f,$lazy:_,$ready:H,$issues:j,$silentIssues:M,$errors:I,$silentErrors:L,$rewardEarly:y,$autoDirty:w,$silent:C,$clearExternalErrorsOnChange:x,$anyDirty:o,$edited:R,$anyEdited:z,$name:G,$haveAnyAsyncRule:ee,$shortcuts:$,$validating:T,$tooltips:B,$dirty:i,processShortcuts:Q,$silentValue:O,$inactive:K,$modifiers:Z}}),q(),I=_(N.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(Y.value).forEach(t=>{t.$fieldDirty=e})}),R=_([N.$error,N.$correct,N.$invalid,N.$pending],()=>{Object.values(Y.value).forEach(e=>{e.$fieldError=N.$error.value,e.$fieldInvalid=N.$invalid.value,e.$fieldPending=N.$pending.value,e.$fieldCorrect=N.$correct.value})}),L=_(N.$haveAnyAsyncRule,U)}function q(){F=_(n,()=>{N.$autoDirty.value&&!N.$silent.value&&(N.$dirty.value||(N.$dirty.value=!0)),r.value instanceof Function&&H(),(!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&z(),N.$clearExternalErrorsOnChange.value&&oe()},{deep:x?!0:W?1:!0})}async function J(){try{let{promise:e}=Q(Promise.allSettled(Object.values(Y.value).map(e=>e.$parse())));await e}catch{}}let Y=u({}),X=u({});H();function ee(e,t){if(Z(),oe(),N.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else 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&&oe(),!t&&!e?.keepValidationState)for(let e of Object.values(Y.value))e.$reset();if(!N.$lazy.value&&!N.$silent.value&&!t)for(let e of Object.values(Y.value))e.$parse()}function Z(){`cancel`in z&&z.cancel()}function Q(e){return B&&B.abort(),B=j(e),B}function $(){Z(),B&&B.abort()}function te(e=!0,t=!1){N.$dirty.value||(N.$dirty.value=!0),t&&e?(!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&(Z(),z()):e&&(Z(),z())}async function ne(e){try{if(e&&(n.value=e),g)return A?(te(!1),A()):{valid:!1,data:n.value,errors:N.$errors.value,issues:N.$issues.value};let t=n.value;if(!N.$dirty.value)N.$dirty.value=!0;else if(!N.$silent.value&&N.$dirty.value&&!N.$pending.value&&!V.value&&!N.$haveAnyAsyncRule.value)return{valid:!N.$error.value,data:t,errors:N.$errors.value,issues:N.$issues.value};if(g)return{valid:!m?.value?.length,data:t,errors:N.$errors.value,issues:N.$issues.value};if(b(Y.value))return{valid:!0,data:t,errors:N.$errors.value,issues:N.$issues.value};$();let{promise:r}=Q(Promise.allSettled(Object.values(Y.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:N.$errors.value,issues:N.$issues.value}}catch{return{valid:!1,data:n.value,errors:N.$errors.value,issues:N.$issues.value}}}function ae(e=!0){return N.$dirty.value?n.value:e?{_null:!0}:null}function oe(){p?.value?.length&&(p.value=[])}!N.$lazy.value&&!N.$dirty.value&&!N.$silent.value&&J();let{$shortcuts:se,$validating:ue,$autoDirty:de,$rewardEarly:fe,$clearExternalErrorsOnChange:pe,$haveAnyAsyncRule:me,$debounce:he,$lazy:ge,..._e}=N;return l({..._e,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:Y,...se,$path:a,$isDebouncing:V,$reset:ee,$touch:te,$validate:ne,$unwatch:G,$watch:K,$extractDirtyFields:ae,$clearExternalErrors:oe,$abort:$,"~modifiers":N.$modifiers,...le(ne)})}function de({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_}){let v=s.value?.$id??l.$key??K(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=me({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),C}function fe({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,originalState:g,shortcuts:y,fieldName:x}){let S=t(),w,T=t(),E,D=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let O=u(),k=u(n.value),A=u({}),j,M,N=u({}),P=o.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Q(e)||typeof e==`function`):!1:!1)})),F(),z();function F(){A.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(O.value=K(),Object.defineProperties(n.value,{$id:{value:O.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(O.value=n.value.$id)),k.value=N.value.$value,Array.isArray(n.value)&&!E.isPrimitiveArray.value?P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=V(r.value.$each,f(()=>t),n);l&&D.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each);return de({$id:O.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}).filter(e=>!!e):P.value=[],N.value=ue({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,originalState:g,shortcuts:y,fieldName:x,schemaMode:p})}function I(){if(Array.isArray(n.value)&&!E.isPrimitiveArray.value){let t=C(P.value);P.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&P.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(O.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=V(r.value.$each,l,n);t&&D.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]);return de({$id:O.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),originalState:g,shortcuts:y,fieldName:x,schemaMode:p})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(O.value,t.toString())})}else P.value=[]}function L(){j=_(n,()=>{M?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!O.value?F():I(),R()},{deep:W?1:!0,flush:`pre`}),R()}function R(){M=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&N.value.$touch(!1,!0)},{flush:`post`})}function z(){L(),S=t(),w=S.run(()=>{let r=e({get:()=>n.value,set(e){j?.(),M?.(),n.value=e,L()}}),i=e(()=>N.value.$dirty&&(!P.value.length||P.value.every(e=>e.$dirty))),o=e(()=>N.value.$anyDirty||P.value.some(e=>e.$anyDirty)),c=e(()=>N.value.$invalid||P.value.some(e=>e.$invalid)),d=e(()=>(b(N.value.$rules)?!0:N.value.$correct)&&(!P.value.length||P.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>N.value.$error||P.value.some(e=>e.$error)),p=e(()=>!(c.value||_.value)),_=e(()=>N.value.$pending||P.value.some(e=>e.$pending)),S=e(()=>!!P.value.length&&P.value.every(e=>e.$edited)),C=e(()=>N.value.$anyEdited||P.value.some(e=>e.$anyEdited)),w=e(()=>({$self:N.value.$issues,$each:P.value.map(e=>e.$issues)})),T=e(()=>({$self:N.value.$errors,$each:P.value.map(e=>e.$errors)})),E=e(()=>({$self:N.value.$silentErrors,$each:P.value.map(e=>e.$silentErrors)})),O=e(()=>A.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):A.value.$rewardEarly),k=e(()=>O.value?!0:A.value.$silent==null?h(s.silent)==null?!1:h(s.silent):A.value.$silent),F=e(()=>A.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):A.value.$autoDirty),I=e(()=>x),R=e(()=>({$deepCompare:A.value.$deepCompare??!1,$lazy:A.value.$lazy??!1,$rewardEarly:O.value,$autoDirty:F.value,$silent:k.value,$clearExternalErrorsOnChange:A.value.$clearExternalErrorsOnChange??!1}));function z(){y?.collections&&Object.entries(y?.collections).forEach(([e,s])=>{let h=t();B[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:T,$silentErrors:E,$initialValue:m,$originalValue:g,$ready:p,$anyDirty:o,$name:I,$each:P,$self:N,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),D.push(h)})}let B={};return z(),{$dirty:i,$anyDirty:o,$invalid:c,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:I,$shortcuts:B,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:O,$silent:k,$autoDirty:F,$issues:w,$modifiers:R}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function B(){j?.(),N.value&&N.value.$unwatch(),P.value&&P.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),S.stop(),S=t(),T.stop(),T=t(!0),D.forEach(e=>e.stop()),D=[]}function H(e=!0,t=!1){N.value.$touch(e,t),P.value.forEach(n=>{n.$touch(e,t)})}function U(e,t){if(B(),!t)if(e?.toOriginalState)n.value=C(g),m.value=C(g);else 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&&J(),e?.keepValidationState||(N.value.$reset(e,t),P.value.forEach(t=>{t.$reset(e,!0)})),t||F()}function G(){N.value.$abort(),P.value.forEach(e=>{e.$abort()})}async function q(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([N.value.$validate(e),...P.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function J(){N.value.$clearExternalErrors(),P.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e=!0){let t=P.value.map(t=>{if(te(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:X,...ee}=w;return l({$self:N,...ee,...X,$path:a,$each:P,$value:n,$initialValue:m,$originalValue:g,$validate:q,$unwatch:B,$watch:z,$touch:H,$reset:U,$abort:G,$extractDirtyFields:Y,$clearExternalErrors:J,"~modifiers":w.$modifiers,...le(q)})}function pe({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),T,E=[],D=null,O=null,k=null,A=null;async function j(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,me({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,me({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t);return[t,me({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,me({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));M.value={...l,...u,...d,...p},t&&L()}let M=x.storage.getFieldsEntry(a);j();function F(){s&&(k=_(s,()=>{R(),j()},{deep:!0}))}function I(){A=_(r,()=>{R(),j(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(D?.(),D=_(o,()=>{R(),j()},{deep:!0,flush:`pre`}),F()),d&&(O?.(),O=_(d,()=>{R(),j()},{deep:!0,flush:`post`})),I(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,j(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,j()}}),o=e(()=>{let e=M.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=M.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=M.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(M.value).reduce((e,[t,n])=>((!ne(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>ne(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct):!1}),f=e(()=>{let e=M.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=M.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$silentErrors;return e}),F=e(()=>{if(!Object.keys(M.value).length)return!1;for(let e in M.value)if(!M.value[e]?.$edited)return!1;return!0}),I=e(()=>{for(let e in M.value)if(M.value[e]?.$anyEdited)return!0;return!1}),L=e(()=>y),z=e(()=>({autoDirty:S.value,lazy:h(x.options.lazy)??!1,rewardEarly:_.value,silent:b.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function B(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();U[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:L,$silentErrors:A,$initialValue:m,$errors:k,$fields:M,$edited:F,$anyEdited:I,$issues:O,"~modifiers":h(x.options)}))}),e}),E.push(p)})}let H=e({get:()=>p?Object.fromEntries(Object.entries(p?.(M.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,N(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,P(t,e)]))}]:[])):{},set(){}}),U={};return B(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:L,$shortcuts:U,$groups:H,$silentValue:a,$edited:F,$anyEdited:I,$localPending:w,$autoDirty:S,$silent:b,$value:n,$modifiers:z}})}function R(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},M.value)for(let e of Object.values(M.value))e?.$unwatch()}function z(){let e=M.value;for(let t of Object.values(e))t.$clearExternalErrors()}function B(e,t){if(k?.(),R(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else 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);if(!e?.keepValidationState)for(let t of Object.values(M.value))t?.$reset(e,!0);e?.clearExternalErrors&&z(),F(),t||j()}function V(e=!0,t=!1){for(let n of Object.values(M.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(M.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(M.value))e.$abort()}async function G(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value};{let e=r.value;return W(),{valid:(await Promise.allSettled(Object.values(M.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e,errors:T.$errors.value,issues:T.$issues.value}}}catch{return{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value}}finally{T.$localPending.value=!1}}let{$shortcuts:K,$localPending:q,...J}=T,Y=l({...J,...K,$path:i,$initialValue:m,$originalValue:g,$fields:M,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,...o?{"~modifiers":T.$modifiers}:{},...le(G)});return v(()=>{for(let e of Object.keys(Y).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete Y[e];for(let e of Object.values(M.value))e?.$name&&Object.assign(Y,{[e.$name]:e})}),Y}function me({rulesDef:e,...n}){if(ee(e,n.state,n.schemaMode))return fe({rulesDef:e,...n});if(X(n.state,e)){if(B(n.state))return pe({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return pe({rulesDef:e,...a,state:r.fakeState})}}else if(Z(e))return ue({rulesDef:i(e.value)?e.value:e,...n})}const he=Symbol(`regle`);function ge({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=Y(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),X(a,i)?h.value=pe({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):Z(i)&&(h.value=ue({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:`root`,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch(),y?.(),v?.()}),l({regle:h})}function _e({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s}){let c=i(n)?n:typeof n==`function`?void 0:e(()=>n),l={...a,...r},f,p=d(c??{});typeof n==`function`&&(f=v(()=>{p.value=n(t),m(p)}));let h=u(w(t.value)?{...C(t.value)}:C(t.value)),g=w(t.value)?{...C(t.value)}:C(t.value);return q(()=>{f?.()}),ge({scopeRules:p,state:t,options:l,initialState:h,originalState:g,customRules:o,shortcuts:s})}function ve(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(t,a,o){return{r$:_e({state:i(t)?t:u(t),rulesFactory:a,options:o,globalOptions:r,customRules:e,shortcuts:n}).regle}}return a}const ye=ve();function be(){function e(e,t){return t}return e}const xe=be();function Se(e){let t={};if(Object.entries(e).some(([e,t])=>Q(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&w(r)&&`$each`in r&&r.$each&&w(r.$each)?t[n]=[Se(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>Q(t)||typeof t==`function`)?t[n]=Se(r):t[n]=null}return t}function Ce(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o){let s=i(n)?n:typeof n==`function`?void 0:e(()=>n);return _e({state:u(Se(s?.value)),rulesFactory:s,options:o,globalOptions:a,customRules:t,shortcuts:r}).regle}return o}const we=Ce();function Te({rules:e,modifiers:t,shortcuts:n}){let r=ve(e,t,n),i=Ce(e,t,n);return r.__config={rules:e,modifiers:t,shortcuts:n},i.__config={rules:e,modifiers:t,shortcuts:n},{useRegle:r,inferRules:be(),useRules:i}}function Ee(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=ve(a,o,s);return c.__config={rules:a,modifiers:o,shortcuts:s},{useRegle:c,inferRules:be()}}function De(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),v=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),y=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),b=e(()=>r?Object.values(t):t);function x(e){Object.values(t).forEach(t=>{t.$reset(e)})}function S(){Object.values(t).forEach(e=>{e.$touch()})}function C(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function w(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function T(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}return l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:b,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:y,$reset:x,$touch:S,$validate:T,$extractDirtyFields:C,$clearExternalErrors:w})}function Oe(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){return i.value?De(e[i.value]??{},!n.asRecord):De(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function ke(t,r){let i=r??ye;return{useScopedRegle:((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}-${K()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),q(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}})}}function Ae(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):J(()=>u({"~~global":{}})))(),{useScopedRegle:n}=ke(t,e?.customUseRegle),{useCollectScope:r}=Oe(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:je,useScopedRegle:Me}=Ae();function Ne(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Q(t))return h(t._params?.[0])===i.value}})||r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function Pe(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Fe(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),Pe(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Ie(e){return e}function Le(e,t){return n=>T({...e},t(n))}var Re=`1.11.0-beta.4`;const ze={install(e){e.provide(he,Re)}};export{M as InternalRuleType,ze as RegleVuePlugin,z as createRule,Ae as createScopedUseRegle,Ne as createVariant,Te as defineRegleConfig,Ie as defineRules,Ee as extendRegleConfig,oe as flatErrors,xe as inferRules,De as mergeRegles,Pe as narrowVariant,Le as refineRules,F as unwrapRuleParameters,je as useCollectScope,ye as useRegle,ge as useRootStorage,we as useRules,Me as useScopedRegle,Fe as variantToRef};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.11.0-beta.
|
|
4
|
-
"description": "Headless form validation library for Vue
|
|
3
|
+
"version": "1.11.0-beta.4",
|
|
4
|
+
"description": "Headless form validation library for Vue",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"pinia": ">=2.2.5",
|
|
7
7
|
"vue": ">=3.3.0"
|
|
@@ -13,22 +13,22 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@standard-schema/spec": "1.0.0",
|
|
16
|
-
"@vue/devtools-api": "7.7.
|
|
16
|
+
"@vue/devtools-api": "7.7.9",
|
|
17
17
|
"expect-type": "1.2.2",
|
|
18
18
|
"type-fest": "5.2.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@total-typescript/ts-reset": "0.6.1",
|
|
22
|
-
"@types/node": "22.19.
|
|
22
|
+
"@types/node": "22.19.1",
|
|
23
|
+
"@vue/devtools-kit": "7.7.9",
|
|
23
24
|
"@vue/test-utils": "2.4.6",
|
|
24
25
|
"expect-type": "1.2.2",
|
|
25
|
-
"@vue/devtools-kit": "7.7.7",
|
|
26
26
|
"prettier": "3.6.2",
|
|
27
|
-
"tsdown": "0.16.
|
|
27
|
+
"tsdown": "0.16.6",
|
|
28
28
|
"typescript": "5.9.3",
|
|
29
29
|
"vitest": "4.0.13",
|
|
30
|
-
"vue": "3.5.
|
|
31
|
-
"vue-tsc": "3.1.
|
|
30
|
+
"vue": "3.5.25",
|
|
31
|
+
"vue-tsc": "3.1.5"
|
|
32
32
|
},
|
|
33
33
|
"type": "module",
|
|
34
34
|
"exports": {
|