@regle/core 1.11.0-beta.2 → 1.11.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +28 -8
- package/dist/regle-core.js +126 -92
- package/dist/regle-core.min.js +1 -1
- package/package.json +7 -7
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
|
@@ -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,
|
|
@@ -2347,14 +2384,18 @@ const PRIORITY_KEYS = {
|
|
|
2347
2384
|
};
|
|
2348
2385
|
const INSPECTOR_IDS = {
|
|
2349
2386
|
INSPECTOR: "regle-inspector",
|
|
2387
|
+
COMPONENTS: "components",
|
|
2350
2388
|
TIMELINE: "regle-timeline"
|
|
2351
2389
|
};
|
|
2352
2390
|
|
|
2353
2391
|
function useRegleDevtoolsRegistry() {
|
|
2392
|
+
const devtoolsApi = shallowRef();
|
|
2354
2393
|
const instances = shallowRef(/* @__PURE__ */ new Map());
|
|
2355
2394
|
const watchers = shallowRef(/* @__PURE__ */ new Map());
|
|
2356
2395
|
let idCounter = 0;
|
|
2357
|
-
|
|
2396
|
+
function setApi(api) {
|
|
2397
|
+
devtoolsApi.value = api;
|
|
2398
|
+
}
|
|
2358
2399
|
function register(r$, options) {
|
|
2359
2400
|
const id = `${options?.uid?.toString() ?? "regle"}#${++idCounter}`;
|
|
2360
2401
|
const name = options?.name || `Regle #${idCounter}`;
|
|
@@ -2364,9 +2405,17 @@ function useRegleDevtoolsRegistry() {
|
|
|
2364
2405
|
r$,
|
|
2365
2406
|
componentName: options?.componentName ? `<${options.componentName}>` : void 0
|
|
2366
2407
|
});
|
|
2408
|
+
const stopHandle = watch(() => r$, () => notifyDevtools(), {
|
|
2409
|
+
deep: true,
|
|
2410
|
+
flush: "post"
|
|
2411
|
+
});
|
|
2412
|
+
regleDevtoolsRegistry.addWatcher(id, stopHandle);
|
|
2367
2413
|
notifyDevtools();
|
|
2368
2414
|
return id;
|
|
2369
2415
|
}
|
|
2416
|
+
function notifyDevtools() {
|
|
2417
|
+
if (devtoolsApi.value) emitInspectorState(devtoolsApi.value);
|
|
2418
|
+
}
|
|
2370
2419
|
function unregister(id) {
|
|
2371
2420
|
instances.value.delete(id);
|
|
2372
2421
|
const watcher = watchers.value.get(id);
|
|
@@ -2388,29 +2437,24 @@ function useRegleDevtoolsRegistry() {
|
|
|
2388
2437
|
instances.value.clear();
|
|
2389
2438
|
notifyDevtools();
|
|
2390
2439
|
}
|
|
2391
|
-
function onInstancesChange(callback) {
|
|
2392
|
-
notifyCallbacks.value.add(callback);
|
|
2393
|
-
return () => {
|
|
2394
|
-
notifyCallbacks.value.delete(callback);
|
|
2395
|
-
};
|
|
2396
|
-
}
|
|
2397
2440
|
function addWatcher(id, stopHandle) {
|
|
2398
2441
|
watchers.value.set(id, stopHandle);
|
|
2399
2442
|
}
|
|
2400
|
-
function notifyDevtools() {
|
|
2401
|
-
notifyCallbacks.value.forEach((callback) => callback());
|
|
2402
|
-
}
|
|
2403
2443
|
return {
|
|
2404
2444
|
register,
|
|
2405
2445
|
unregister,
|
|
2406
2446
|
getAll,
|
|
2407
2447
|
get,
|
|
2408
2448
|
clear,
|
|
2409
|
-
|
|
2410
|
-
|
|
2449
|
+
addWatcher,
|
|
2450
|
+
setApi,
|
|
2451
|
+
notifyDevtools
|
|
2411
2452
|
};
|
|
2412
2453
|
}
|
|
2413
2454
|
const regleDevtoolsRegistry = useRegleDevtoolsRegistry();
|
|
2455
|
+
/**
|
|
2456
|
+
* To be used by `useRegle` composable.
|
|
2457
|
+
*/
|
|
2414
2458
|
function registerRegleInstance(r$, options) {
|
|
2415
2459
|
if (typeof window === "undefined") return;
|
|
2416
2460
|
const instance = getCurrentInstance();
|
|
@@ -2424,14 +2468,6 @@ function registerRegleInstance(r$, options) {
|
|
|
2424
2468
|
regleDevtoolsRegistry.unregister(id);
|
|
2425
2469
|
});
|
|
2426
2470
|
}
|
|
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
2471
|
|
|
2436
2472
|
function isMethod(value) {
|
|
2437
2473
|
return typeof value === "function";
|
|
@@ -2495,6 +2531,11 @@ function buildFieldState(fieldStatus) {
|
|
|
2495
2531
|
"$fields"
|
|
2496
2532
|
]);
|
|
2497
2533
|
if (remainingProperties.length > 0) state["Other Properties"] = remainingProperties;
|
|
2534
|
+
if (fieldStatus["~modifiers"]) state["Modifiers"] = Object.entries(fieldStatus["~modifiers"]).map(([key, value]) => ({
|
|
2535
|
+
key,
|
|
2536
|
+
value,
|
|
2537
|
+
editable: false
|
|
2538
|
+
}));
|
|
2498
2539
|
return state;
|
|
2499
2540
|
}
|
|
2500
2541
|
/**
|
|
@@ -2563,6 +2604,7 @@ function resolveFieldByPath(fields, path) {
|
|
|
2563
2604
|
const index = parseInt(segment);
|
|
2564
2605
|
if (!isNaN(index)) if (isCollectionRulesStatus(current) && Array.isArray(current.$each)) current = current.$each[index];
|
|
2565
2606
|
else return null;
|
|
2607
|
+
else if (isCollectionRulesStatus(current) && current.$self && current.$self) current = current.$self;
|
|
2566
2608
|
else if (isNestedRulesStatus(current) && current.$fields && current.$fields[segment]) current = current.$fields[segment];
|
|
2567
2609
|
else if (current[segment]) current = current[segment];
|
|
2568
2610
|
else return null;
|
|
@@ -2611,22 +2653,21 @@ function handleValidateAction(nodeId, api) {
|
|
|
2611
2653
|
}
|
|
2612
2654
|
emitInspectorState(api);
|
|
2613
2655
|
}
|
|
2614
|
-
function handleResetAction(nodeId, api, resetState = false) {
|
|
2656
|
+
async function handleResetAction(nodeId, api, resetState = false) {
|
|
2615
2657
|
const fieldInfo = parseFieldNodeId(nodeId);
|
|
2616
2658
|
if (fieldInfo) {
|
|
2617
2659
|
const { instanceId, fieldName } = fieldInfo;
|
|
2618
2660
|
const instance = regleDevtoolsRegistry.get(instanceId);
|
|
2619
2661
|
if (instance && instance.r$.$fields) {
|
|
2620
2662
|
const fieldStatus = resolveFieldByPath(instance.r$.$fields, fieldName);
|
|
2621
|
-
if (fieldStatus && typeof fieldStatus.$reset === "function") fieldStatus.$reset({
|
|
2663
|
+
if (fieldStatus && typeof fieldStatus.$reset === "function") fieldStatus.$reset({ toOriginalState: resetState });
|
|
2622
2664
|
}
|
|
2623
2665
|
} else {
|
|
2624
2666
|
const instance = regleDevtoolsRegistry.get(nodeId);
|
|
2625
|
-
if (instance && typeof instance.r$.$reset === "function") instance.r$.$reset({
|
|
2667
|
+
if (instance && typeof instance.r$.$reset === "function") instance.r$.$reset({ toOriginalState: resetState });
|
|
2626
2668
|
}
|
|
2627
|
-
emitInspectorState(api);
|
|
2628
2669
|
}
|
|
2629
|
-
function handleEditInspectorState(payload
|
|
2670
|
+
function handleEditInspectorState(payload) {
|
|
2630
2671
|
const { nodeId, path, state } = payload;
|
|
2631
2672
|
if (!path.includes("$value")) return;
|
|
2632
2673
|
if (!parseFieldNodeId(nodeId)) return;
|
|
@@ -2636,13 +2677,10 @@ function handleEditInspectorState(payload, api) {
|
|
|
2636
2677
|
const fieldStatus = resolveFieldByPath(instance.r$.$fields, fieldPath);
|
|
2637
2678
|
if (fieldStatus && "$value" in fieldStatus) fieldStatus.$value = state.value;
|
|
2638
2679
|
}
|
|
2639
|
-
emitInspectorState(api);
|
|
2640
2680
|
}
|
|
2641
|
-
function emitInspectorState(api) {
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
2645
|
-
}, 100);
|
|
2681
|
+
async function emitInspectorState(api) {
|
|
2682
|
+
api.sendInspectorState(INSPECTOR_IDS.INSPECTOR);
|
|
2683
|
+
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
2646
2684
|
}
|
|
2647
2685
|
|
|
2648
2686
|
function buildNodeTags(fieldOrR$, componentName) {
|
|
@@ -2737,6 +2775,16 @@ function buildCollectionItemNodes(fieldStatus, instanceId, fieldPath) {
|
|
|
2737
2775
|
});
|
|
2738
2776
|
}
|
|
2739
2777
|
});
|
|
2778
|
+
if (fieldStatus.$self && typeof fieldStatus.$self === "object" && !isEmpty(fieldStatus.$self.$rules)) {
|
|
2779
|
+
const itemTags = buildNodeTags(fieldStatus.$self);
|
|
2780
|
+
const itemPath = `${fieldPath}[$self]`;
|
|
2781
|
+
children.unshift({
|
|
2782
|
+
id: createFieldNodeId(instanceId, itemPath),
|
|
2783
|
+
label: "$self",
|
|
2784
|
+
tags: itemTags,
|
|
2785
|
+
children: buildRuleNodes(fieldStatus.$self, instanceId, itemPath)
|
|
2786
|
+
});
|
|
2787
|
+
}
|
|
2740
2788
|
return children;
|
|
2741
2789
|
}
|
|
2742
2790
|
function buildNestedFieldNodes(fields, instanceId, parentPath) {
|
|
@@ -2745,13 +2793,18 @@ function buildNestedFieldNodes(fields, instanceId, parentPath) {
|
|
|
2745
2793
|
if (fieldStatus && typeof fieldStatus === "object") {
|
|
2746
2794
|
const fieldPath = parentPath ? `${parentPath}.${fieldName}` : fieldName;
|
|
2747
2795
|
const fieldTags = buildNodeTags(fieldStatus);
|
|
2796
|
+
let isCollection = false;
|
|
2797
|
+
let isEmptyCollection = false;
|
|
2748
2798
|
let fieldChildren = [];
|
|
2749
|
-
if (isCollectionRulesStatus(fieldStatus))
|
|
2750
|
-
|
|
2799
|
+
if (isCollectionRulesStatus(fieldStatus)) {
|
|
2800
|
+
fieldChildren = buildCollectionItemNodes(fieldStatus, instanceId, fieldPath);
|
|
2801
|
+
isCollection = true;
|
|
2802
|
+
if (fieldChildren.length === 0) isEmptyCollection = true;
|
|
2803
|
+
} else if (isNestedRulesStatus(fieldStatus)) fieldChildren = buildNestedFieldNodes(fieldStatus.$fields, instanceId, fieldPath);
|
|
2751
2804
|
else if (isFieldStatus(fieldStatus)) fieldChildren = buildRuleNodes(fieldStatus, instanceId, fieldPath);
|
|
2752
2805
|
children.push({
|
|
2753
2806
|
id: createFieldNodeId(instanceId, fieldPath),
|
|
2754
|
-
label: `${fieldName}`,
|
|
2807
|
+
label: `${isCollection ? `${fieldName}[${fieldChildren.length}]` : fieldName}${isEmptyCollection ? " (empty)" : ""}`,
|
|
2755
2808
|
tags: fieldTags,
|
|
2756
2809
|
children: fieldChildren
|
|
2757
2810
|
});
|
|
@@ -2767,12 +2820,15 @@ function buildRootChildrenNodes(r$, instanceId) {
|
|
|
2767
2820
|
if (fieldStatus && typeof fieldStatus === "object") {
|
|
2768
2821
|
const fieldTags = buildNodeTags(fieldStatus);
|
|
2769
2822
|
let fieldChildren = [];
|
|
2770
|
-
|
|
2771
|
-
|
|
2823
|
+
let isCollection = false;
|
|
2824
|
+
if (isCollectionRulesStatus(fieldStatus)) {
|
|
2825
|
+
fieldChildren = buildCollectionItemNodes(fieldStatus, instanceId, fieldName);
|
|
2826
|
+
isCollection = true;
|
|
2827
|
+
} else if (isNestedRulesStatus(fieldStatus)) fieldChildren = buildNestedFieldNodes(fieldStatus.$fields, instanceId, fieldName);
|
|
2772
2828
|
else if (isFieldStatus(fieldStatus)) fieldChildren = buildRuleNodes(fieldStatus, instanceId, fieldName);
|
|
2773
2829
|
children.push({
|
|
2774
2830
|
id: createFieldNodeId(instanceId, fieldName),
|
|
2775
|
-
label: fieldName
|
|
2831
|
+
label: `${isCollection ? `${fieldName}[${fieldChildren.length}]` : fieldName}`,
|
|
2776
2832
|
tags: fieldTags,
|
|
2777
2833
|
children: fieldChildren
|
|
2778
2834
|
});
|
|
@@ -2815,9 +2871,10 @@ function createDevtools(app) {
|
|
|
2815
2871
|
logo: "https://reglejs.dev/logo_main.png",
|
|
2816
2872
|
packageName: "@regle/core",
|
|
2817
2873
|
homepage: "https://reglejs.dev",
|
|
2818
|
-
componentStateTypes: [],
|
|
2874
|
+
componentStateTypes: ["Regles"],
|
|
2819
2875
|
app
|
|
2820
2876
|
}, (api) => {
|
|
2877
|
+
regleDevtoolsRegistry.setApi(api);
|
|
2821
2878
|
api.addInspector({
|
|
2822
2879
|
id: INSPECTOR_IDS.INSPECTOR,
|
|
2823
2880
|
label: "Regle",
|
|
@@ -2828,28 +2885,28 @@ function createDevtools(app) {
|
|
|
2828
2885
|
nodeActions: [
|
|
2829
2886
|
{
|
|
2830
2887
|
icon: "check_circle",
|
|
2831
|
-
tooltip: "Validate
|
|
2888
|
+
tooltip: "Validate",
|
|
2832
2889
|
action: (nodeId) => {
|
|
2833
2890
|
handleValidateAction(nodeId, api);
|
|
2834
2891
|
}
|
|
2835
2892
|
},
|
|
2836
2893
|
{
|
|
2837
2894
|
icon: "refresh",
|
|
2838
|
-
tooltip: "Reset validation state
|
|
2895
|
+
tooltip: "Reset validation state",
|
|
2839
2896
|
action: (nodeId) => {
|
|
2840
2897
|
handleResetAction(nodeId, api);
|
|
2841
2898
|
}
|
|
2842
2899
|
},
|
|
2843
2900
|
{
|
|
2844
2901
|
icon: "restore",
|
|
2845
|
-
tooltip: "Restore to
|
|
2902
|
+
tooltip: "Restore to original state",
|
|
2846
2903
|
action: (nodeId) => {
|
|
2847
2904
|
handleResetAction(nodeId, api, true);
|
|
2848
2905
|
}
|
|
2849
2906
|
}
|
|
2850
2907
|
]
|
|
2851
2908
|
});
|
|
2852
|
-
|
|
2909
|
+
regleDevtoolsRegistry.notifyDevtools();
|
|
2853
2910
|
let componentInstances = [];
|
|
2854
2911
|
let selectedNodeId = null;
|
|
2855
2912
|
api.on.getInspectorTree(async (payload) => {
|
|
@@ -2882,33 +2939,10 @@ function createDevtools(app) {
|
|
|
2882
2939
|
}
|
|
2883
2940
|
});
|
|
2884
2941
|
api.on.editInspectorState((payload) => {
|
|
2885
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload
|
|
2942
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload);
|
|
2886
2943
|
});
|
|
2887
2944
|
});
|
|
2888
2945
|
}
|
|
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
2946
|
|
|
2913
2947
|
function useRootStorage({ initialState, originalState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode = false, onValidate }) {
|
|
2914
2948
|
const storage = useStorage();
|
|
@@ -3371,7 +3405,7 @@ function createUseCollectScope(instances, options) {
|
|
|
3371
3405
|
function createUseScopedRegleComposable(instances, customUseRegle) {
|
|
3372
3406
|
const scopedUseRegle = customUseRegle ?? useRegle;
|
|
3373
3407
|
const useScopedRegle$1 = ((state, rulesFactory, options) => {
|
|
3374
|
-
const { namespace, scopeKey: _scopeKey
|
|
3408
|
+
const { namespace, scopeKey: _scopeKey, ...restOptions } = options ?? {};
|
|
3375
3409
|
scopedUseRegle.__config ??= {};
|
|
3376
3410
|
const computedNamespace = computed(() => toValue(namespace));
|
|
3377
3411
|
const $id = ref(`${Object.keys(instances.value).length + 1}-${randomId()}`);
|
|
@@ -3528,7 +3562,7 @@ function refineRules(rules, refinement) {
|
|
|
3528
3562
|
return (state) => merge({ ...rules }, refinement(state));
|
|
3529
3563
|
}
|
|
3530
3564
|
|
|
3531
|
-
var version$1 = "1.11.0-beta.
|
|
3565
|
+
var version$1 = "1.11.0-beta.3";
|
|
3532
3566
|
|
|
3533
3567
|
const regleSymbol = Symbol("regle");
|
|
3534
3568
|
|
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})}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=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 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 q(()=>{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])=>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]=[xe(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>Q(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(),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 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):J(()=>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(Q(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.3`;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,oe 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};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.11.0-beta.
|
|
3
|
+
"version": "1.11.0-beta.3",
|
|
4
4
|
"description": "Headless form validation library for Vue 3",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"pinia": ">=2.2.5",
|
|
@@ -13,22 +13,22 @@
|
|
|
13
13
|
},
|
|
14
14
|
"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.24",
|
|
31
|
+
"vue-tsc": "3.1.5"
|
|
32
32
|
},
|
|
33
33
|
"type": "module",
|
|
34
34
|
"exports": {
|