@regle/rules 1.18.0-beta.3 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-rules.d.ts +15 -15
- package/dist/regle-rules.js +26 -26
- package/dist/regle-rules.min.js +2 -2
- package/package.json +8 -8
package/dist/regle-rules.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/rules v1.18.0
|
|
2
|
+
* @regle/rules v1.18.0
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -33,10 +33,10 @@ import { EmptyObject, IsTuple, IsUnknown } from "type-fest";
|
|
|
33
33
|
*
|
|
34
34
|
* @see {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withmessage Documentation}
|
|
35
35
|
*/
|
|
36
|
-
declare function withMessage<TType
|
|
37
|
-
declare function withMessage<TType
|
|
38
|
-
declare function withMessage<TValue
|
|
39
|
-
declare function withMessage<TType
|
|
36
|
+
declare function withMessage<TType extends string | unknown, TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetadata>;
|
|
37
|
+
declare function withMessage<TType extends string | unknown, TValue extends any, TParams extends unknown[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetadata>;
|
|
38
|
+
declare function withMessage<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: InlineRuleDeclaration<TValue, TParams, TReturn>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TReturn extends Promise<infer M> ? M : TReturn>, string | string[]>): RegleRuleDefinition<unknown, TValue, TParams, TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
|
|
39
|
+
declare function withMessage<TType extends string | unknown, TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: (...args: any[]) => RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetadata>;
|
|
40
40
|
/**
|
|
41
41
|
* The `withTooltip` wrapper allows you to display additional messages for your field that aren't necessarily errors.
|
|
42
42
|
* Tooltips are aggregated and accessible via `$tooltips` property.
|
|
@@ -63,9 +63,9 @@ declare function withMessage<TType$1 extends string | unknown, TValue$1 extends
|
|
|
63
63
|
*
|
|
64
64
|
* @see {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withtooltip Documentation}
|
|
65
65
|
*/
|
|
66
|
-
declare function withTooltip<TType
|
|
67
|
-
declare function withTooltip<TType
|
|
68
|
-
declare function withTooltip<TValue
|
|
66
|
+
declare function withTooltip<TType extends string | unknown, TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetadata>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetadata>;
|
|
67
|
+
declare function withTooltip<TType extends string | unknown, TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetadata>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetadata>;
|
|
68
|
+
declare function withTooltip<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: InlineRuleDeclaration<TValue, TParams, TReturn>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TReturn extends Promise<infer M> ? M : TReturn>, string | string[]>): RegleRuleDefinition<unknown, TValue, TParams, TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
|
|
69
69
|
/**
|
|
70
70
|
* `withAsync` works like `withParams`, but is specifically designed for async rules that depend on external values.
|
|
71
71
|
*
|
|
@@ -89,8 +89,8 @@ declare function withTooltip<TValue$1 extends any, TParams$1 extends any[], TRet
|
|
|
89
89
|
*
|
|
90
90
|
* @see {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withasync Documentation}
|
|
91
91
|
*/
|
|
92
|
-
declare function withAsync<TValue
|
|
93
|
-
declare function withAsync<TType
|
|
92
|
+
declare function withAsync<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends Promise<RegleRuleMetadataDefinition> = Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn)>(rule: InlineRuleDeclaration<TValue, TParams, TReturn>, depsArray?: [...TParams]): RegleRuleDefinition<unknown, TValue, UnwrapRegleUniversalParams<TParams>, true, TMetadata>;
|
|
93
|
+
declare function withAsync<TType extends string | unknown, TValue extends any, TParams extends any[], TMetadata extends RegleRuleMetadataDefinition>(rule: RegleRuleWithParamsDefinition<TType, TValue, TParams, true, TMetadata>, depsArray?: [...TParams]): RegleRuleWithParamsDefinition<TType, TValue, TParams, true, TMetadata>;
|
|
94
94
|
/**
|
|
95
95
|
* The `withParams` wrapper allows your rule to depend on external parameters,
|
|
96
96
|
* such as a reactive property in your component or store.
|
|
@@ -118,8 +118,8 @@ declare function withAsync<TType$1 extends string | unknown, TValue$1 extends an
|
|
|
118
118
|
*
|
|
119
119
|
* @see {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withparams Documentation}
|
|
120
120
|
*/
|
|
121
|
-
declare function withParams<TType
|
|
122
|
-
declare function withParams<TType
|
|
121
|
+
declare function withParams<TType extends string | unknown, TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TType, TValue, any[], TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleDefinition<TType, TValue, UnwrapRegleUniversalParams<TParams>, TAsync, TMetadata>;
|
|
122
|
+
declare function withParams<TType extends string | unknown, TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetadata>;
|
|
123
123
|
interface ApplyIfOptions {
|
|
124
124
|
/**
|
|
125
125
|
* ⚠️ Internal use for the `pipe` operator.
|
|
@@ -485,7 +485,7 @@ declare function xor<TRules extends [FormRuleDeclaration<any, any>, ...FormRuleD
|
|
|
485
485
|
*
|
|
486
486
|
* @see {@link https://reglejs.dev/core-concepts/rules/rules-operators#not Documentation}
|
|
487
487
|
*/
|
|
488
|
-
declare function not<TType
|
|
488
|
+
declare function not<TType extends string | unknown = unknown, TValue = unknown, TParams extends any[] = [], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetadata> | InlineRuleDeclaration<TValue, TParams, TReturn>, message?: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<IsUnknown<TType> extends true ? 'not' : `not:${TType & string}`, TValue, TParams, TAsync, TMetadata>;
|
|
489
489
|
/**
|
|
490
490
|
* The `assignIf` is a shorthand for conditional destructuring assignment.
|
|
491
491
|
* It allows applying **multiple rules** to a field conditionally.
|
|
@@ -508,7 +508,7 @@ declare function not<TType$1 extends string | unknown = unknown, TValue$1 = unkn
|
|
|
508
508
|
*
|
|
509
509
|
* @see {@link https://reglejs.dev/core-concepts/rules/rules-operators#assignif Documentation}
|
|
510
510
|
*/
|
|
511
|
-
declare function assignIf<TValue
|
|
511
|
+
declare function assignIf<TValue extends unknown = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>, TRulesDelc extends RegleRuleDecl<TValue, TCustomRules> = RegleRuleDecl<TValue, TCustomRules>>(_condition: MaybeRefOrGetter<Maybe<boolean>>, rules: MaybeRefOrGetter<TRulesDelc>, otherwiseRules?: MaybeRefOrGetter<TRulesDelc>): ComputedRef<TRulesDelc>;
|
|
512
512
|
type PipeTupleToObject<TArray extends unknown[]> = { [Key in keyof TArray as TArray[Key] extends RegleRuleDefinition<infer TType extends string, any, any> ? `${TType & string}` : `anonymous${Key & (`${number}` | (IsTuple<TArray> extends true ? never : number))}`]: TArray[Key] };
|
|
513
513
|
interface PipeOptions {
|
|
514
514
|
debounce?: number;
|
|
@@ -1087,7 +1087,7 @@ declare const ipv4Address: RegleRuleDefinition<'ipv4Address', string, [], false,
|
|
|
1087
1087
|
*
|
|
1088
1088
|
* @see {@link https://reglejs.dev/core-concepts/rules/built-in-rules#literal Documentation}
|
|
1089
1089
|
*/
|
|
1090
|
-
declare function literal<const TValue
|
|
1090
|
+
declare function literal<const TValue extends string | number>(literal: MaybeRefOrGetter<TValue>): RegleRuleDefinition<'literal', TValue, [literal: TValue], false, boolean, MaybeInput<TValue>, string | number, true>;
|
|
1091
1091
|
/**
|
|
1092
1092
|
* Validates lowercase strings.
|
|
1093
1093
|
*
|
package/dist/regle-rules.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/rules v1.18.0
|
|
2
|
+
* @regle/rules v1.18.0
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -248,9 +248,9 @@ function isDate(value) {
|
|
|
248
248
|
let possibleDate = null;
|
|
249
249
|
if (value instanceof Date) possibleDate = value;
|
|
250
250
|
else if (typeof value === "string") {
|
|
251
|
-
const date
|
|
252
|
-
if (date
|
|
253
|
-
possibleDate = date
|
|
251
|
+
const date = new Date(value);
|
|
252
|
+
if (date.toString() === "Invalid Date") return false;
|
|
253
|
+
possibleDate = date;
|
|
254
254
|
}
|
|
255
255
|
return !!possibleDate;
|
|
256
256
|
}
|
|
@@ -536,7 +536,7 @@ function computeRulesResults(rules, value, ...params) {
|
|
|
536
536
|
paramIndex++;
|
|
537
537
|
} else {
|
|
538
538
|
const paramsLength = rule._params?.length ?? 0;
|
|
539
|
-
$rules.push(rule.validator(value, ...params.slice(paramIndex, paramsLength)));
|
|
539
|
+
$rules.push(rule.validator(value, ...params.slice(paramIndex, paramIndex + paramsLength)));
|
|
540
540
|
if (paramsLength) paramIndex += paramsLength;
|
|
541
541
|
}
|
|
542
542
|
return $rules;
|
|
@@ -1109,7 +1109,7 @@ const checked = createRule({
|
|
|
1109
1109
|
* Factory function to create string operation rules (contains/startsWith/endsWith).
|
|
1110
1110
|
* Reduces duplication between similar string validation rules.
|
|
1111
1111
|
*/
|
|
1112
|
-
function createStringOperationRule({ type
|
|
1112
|
+
function createStringOperationRule({ type, operation }) {
|
|
1113
1113
|
const operationFn = (value, part) => {
|
|
1114
1114
|
switch (operation) {
|
|
1115
1115
|
case "contains": return value.includes(part);
|
|
@@ -1125,7 +1125,7 @@ function createStringOperationRule({ type: type$1, operation }) {
|
|
|
1125
1125
|
}
|
|
1126
1126
|
};
|
|
1127
1127
|
return createRule({
|
|
1128
|
-
type
|
|
1128
|
+
type,
|
|
1129
1129
|
validator(value, part) {
|
|
1130
1130
|
if (isFilled(value) && isFilled(part) && isString(value) && isString(part)) return operationFn(value, part);
|
|
1131
1131
|
return true;
|
|
@@ -1191,8 +1191,8 @@ function getUserLocale() {
|
|
|
1191
1191
|
if (navigator.languages != void 0) return navigator.languages[0];
|
|
1192
1192
|
return navigator.language;
|
|
1193
1193
|
}
|
|
1194
|
-
function formatLocaleDate(date
|
|
1195
|
-
if (date
|
|
1194
|
+
function formatLocaleDate(date) {
|
|
1195
|
+
if (date) return new Intl.DateTimeFormat(getUserLocale(), { dateStyle: "short" }).format(new Date(date));
|
|
1196
1196
|
return "?";
|
|
1197
1197
|
}
|
|
1198
1198
|
|
|
@@ -1445,7 +1445,7 @@ const exactDigits = createRule({
|
|
|
1445
1445
|
validator: (value, count) => {
|
|
1446
1446
|
if (isFilled(value, false) && isFilled(count)) {
|
|
1447
1447
|
if (isNumber(count)) {
|
|
1448
|
-
const digitsRegex =
|
|
1448
|
+
const digitsRegex = new RegExp(`^\\d{${count}}$`);
|
|
1449
1449
|
return matchRegex(value.toString(), digitsRegex);
|
|
1450
1450
|
}
|
|
1451
1451
|
console.warn(`[exactDigits] Parameter isn't a number, got parameter: ${count}`);
|
|
@@ -1592,7 +1592,7 @@ const fileType = createRule({
|
|
|
1592
1592
|
return true;
|
|
1593
1593
|
},
|
|
1594
1594
|
message({ $params: [accept] }) {
|
|
1595
|
-
return `File type is not allowed. Allowed types are: ${accept.map((type
|
|
1595
|
+
return `File type is not allowed. Allowed types are: ${accept.map((type) => type.split("/")[1]).join(", ")}.`;
|
|
1596
1596
|
}
|
|
1597
1597
|
});
|
|
1598
1598
|
|
|
@@ -1736,8 +1736,8 @@ function nibbleValid(nibble) {
|
|
|
1736
1736
|
if (nibble.length > 3 || nibble.length === 0) return false;
|
|
1737
1737
|
if (nibble[0] === "0" && nibble !== "0") return false;
|
|
1738
1738
|
if (!nibble.match(/^\d+$/)) return false;
|
|
1739
|
-
const numeric
|
|
1740
|
-
return numeric
|
|
1739
|
+
const numeric = +nibble | 0;
|
|
1740
|
+
return numeric >= 0 && numeric <= 255;
|
|
1741
1741
|
}
|
|
1742
1742
|
/**
|
|
1743
1743
|
* Validates IPv4 addresses in dotted decimal notation (e.g., `127.0.0.1`).
|
|
@@ -1780,11 +1780,11 @@ const ipv4Address = createRule({
|
|
|
1780
1780
|
*
|
|
1781
1781
|
* @see {@link https://reglejs.dev/core-concepts/rules/built-in-rules#literal Documentation}
|
|
1782
1782
|
*/
|
|
1783
|
-
function literal(literal
|
|
1784
|
-
return withMessage(withParams((value, literal
|
|
1785
|
-
if (isFilled(value) && isFilled(literal
|
|
1783
|
+
function literal(literal) {
|
|
1784
|
+
return withMessage(withParams((value, literal) => {
|
|
1785
|
+
if (isFilled(value) && isFilled(literal)) return literal === value;
|
|
1786
1786
|
return true;
|
|
1787
|
-
}, [computed(() => toValue(literal
|
|
1787
|
+
}, [computed(() => toValue(literal))]), ({ $params: [literal] }) => `Value should be ${literal}.`);
|
|
1788
1788
|
}
|
|
1789
1789
|
|
|
1790
1790
|
/**
|
|
@@ -1881,7 +1881,7 @@ const maxFileSize = createRule({
|
|
|
1881
1881
|
* Factory function to create length comparison rules (minLength/maxLength).
|
|
1882
1882
|
* Reduces duplication between similar length rules.
|
|
1883
1883
|
*/
|
|
1884
|
-
function createLengthRule({ type
|
|
1884
|
+
function createLengthRule({ type, direction }) {
|
|
1885
1885
|
const compare = (size, limit, allowEqual) => {
|
|
1886
1886
|
if (direction === "min") return allowEqual ? size >= limit : size > limit;
|
|
1887
1887
|
return allowEqual ? size <= limit : size < limit;
|
|
@@ -1891,12 +1891,12 @@ function createLengthRule({ type: type$1, direction }) {
|
|
|
1891
1891
|
return direction === "min" ? `The value must be at least ${limit} characters long` : `The value must be at most ${limit} characters long`;
|
|
1892
1892
|
};
|
|
1893
1893
|
return createRule({
|
|
1894
|
-
type
|
|
1894
|
+
type,
|
|
1895
1895
|
validator: (value, limit, options) => {
|
|
1896
1896
|
const { allowEqual = true } = options ?? {};
|
|
1897
1897
|
if (isFilled(value, false) && isFilled(limit)) {
|
|
1898
1898
|
if (isNumber(limit)) return compare(getSize(value), limit, allowEqual);
|
|
1899
|
-
console.warn(`[${type
|
|
1899
|
+
console.warn(`[${type}] Parameter isn't a number, got parameter: ${limit}`);
|
|
1900
1900
|
return true;
|
|
1901
1901
|
}
|
|
1902
1902
|
return true;
|
|
@@ -1942,7 +1942,7 @@ const maxLength = createLengthRule({
|
|
|
1942
1942
|
* Factory function to create value comparison rules (minValue/maxValue).
|
|
1943
1943
|
* Reduces duplication between similar comparison rules.
|
|
1944
1944
|
*/
|
|
1945
|
-
function createValueComparisonRule({ type
|
|
1945
|
+
function createValueComparisonRule({ type, direction }) {
|
|
1946
1946
|
const compare = (value, limit, allowEqual) => {
|
|
1947
1947
|
if (direction === "min") return allowEqual ? value >= limit : value > limit;
|
|
1948
1948
|
return allowEqual ? value <= limit : value < limit;
|
|
@@ -1952,12 +1952,12 @@ function createValueComparisonRule({ type: type$1, direction }) {
|
|
|
1952
1952
|
return allowEqual ? `The value must be less than or equal to ${limit}` : `The value must be less than ${limit}`;
|
|
1953
1953
|
};
|
|
1954
1954
|
return createRule({
|
|
1955
|
-
type
|
|
1955
|
+
type,
|
|
1956
1956
|
validator: (value, limit, options) => {
|
|
1957
1957
|
const { allowEqual = true } = options ?? {};
|
|
1958
1958
|
if (isFilled(value) && isFilled(limit)) {
|
|
1959
1959
|
if (!isNaN(toNumber(value)) && !isNaN(toNumber(limit))) return compare(toNumber(value), toNumber(limit), allowEqual);
|
|
1960
|
-
console.warn(`[${type
|
|
1960
|
+
console.warn(`[${type}] Value or parameter isn't a number, got value: ${value}, parameter: ${limit}`);
|
|
1961
1961
|
return true;
|
|
1962
1962
|
}
|
|
1963
1963
|
return true;
|
|
@@ -2124,10 +2124,10 @@ function getValidEnumValues(obj) {
|
|
|
2124
2124
|
* @see {@link https://reglejs.dev/core-concepts/rules/built-in-rules#nativeenum Documentation}
|
|
2125
2125
|
*/
|
|
2126
2126
|
function nativeEnum(enumLike) {
|
|
2127
|
-
return withMessage(withParams((value, enumLike
|
|
2128
|
-
if (isFilled(value) && !isEmpty(enumLike
|
|
2127
|
+
return withMessage(withParams((value, enumLike) => {
|
|
2128
|
+
if (isFilled(value) && !isEmpty(enumLike)) return getValidEnumValues(enumLike).includes(value);
|
|
2129
2129
|
return true;
|
|
2130
|
-
}, [computed(() => toValue(enumLike))]), ({ $params: [enumLike
|
|
2130
|
+
}, [computed(() => toValue(enumLike))]), ({ $params: [enumLike] }) => `The value must be one of the following: ${Object.values(enumLike).join(", ")}`);
|
|
2131
2131
|
}
|
|
2132
2132
|
|
|
2133
2133
|
/**
|
package/dist/regle-rules.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/rules v1.18.0
|
|
2
|
+
* @regle/rules v1.18.0
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import{InternalRuleType as e,createRule as t,unwrapRuleParameters as n}from"@regle/core";import{capitalize as r,computed as i,effectScope as a,onScopeDispose as o,ref as s,toValue as c,unref as l}from"vue";function u(e){return e?.constructor?.name==`File`}function d(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):u(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:f(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}function f(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){return(f(e)||typeof e==`function`)&&`_validator`in e}function m(t){let n,r,i=[],a=``,o=!1,s;if(typeof t==`function`&&!(`_validator`in t))n=e.Inline,r=t,o=t.constructor.name===`AsyncFunction`;else if(p(t))({_type:n,validator:r,_message:a,_async:o,_params:i,_active:s}=t);else throw Error(`Cannot extract validator from invalid rule`);return{_type:n,validator:r,_params:i,_message:a,_async:o,_active:s}}function h(e,n){let{_type:r,validator:i,_active:a,_params:o,_async:s}=m(e),c=t({type:r,validator:i,active:a,message:n,async:s}),l=o??[];if(c._params=l,c._message_patched=!0,typeof c==`function`){if(o!=null){let e=c(...l);return e._message_patched=!0,e}return c}else return c}function g(e,n){let{_type:r,validator:i,_active:a,_params:o,_message:s,_async:c}=m(e),l=t({type:r,validator:i,active:a,message:s,tooltip:n,async:c}),u=o??[];if(l._params=u,l._tooltip_patched=!0,typeof l==`function`){let e=l(...u);return l._tooltip_patched=!0,e}else return l}function _(n,r){let i,{_type:a,_params:o,_message:s,_active:c}=m(n);i=typeof n==`function`?async(e,...t)=>n(e,...t):async(...e)=>n.validator(e);let l=(o??[])?.concat(r),u=t({type:a??e.Async,validator:i,message:s,async:!0,active:c});return u._params=l,u(...r??[])}function v(n,r){let i,{_type:a,_params:o,_message:s,_active:c,_async:l}=m(n);i=typeof n==`function`?(e,...t)=>n(e,...t):n.validator;let u=(o??[])?.concat(r),d=t({type:a??e.Inline,validator:i,message:s,active:c,async:l});return d._params=u,d(...r)}function y(e,r,i){let{_type:a,validator:o,_params:s,_message:c,_async:l}=m(r),u=(s??[]).concat(i?.hideParams?[]:[e]);function d(t,...r){let[i]=n([e]);return i?o(t,...r):!0}function f(){let[t]=n([e]);return t}let p=t({type:a,validator:d,active:f,message:c,async:l});return p._params=u,typeof p==`function`?p(...u):p}function b(e){if(d(e))return!1;let t=null;if(e instanceof Date)t=e;else if(typeof e==`string`){let n=new Date(e);if(n.toString()===`Invalid Date`)return!1;t=n}return!!t}function x(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 ee(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 S(e){return e===void 0?`0 bytes`:e<1024?`${e} bytes`:e<1024*1024?`${(e/1024).toFixed(2)} kb`:e<1024*1024*1024?`${(e/1024/1024).toFixed(2)} mb`:`${(e/1024/1024/1024).toFixed(2)} gb`}function C(e,t=!0,n=!0){return!d(typeof e==`string`?e.trim():e,t,n)}function w(e){return e==null?!1:typeof e==`number`?!isNaN(e):!1}function T(e,...t){if(d(e))return!0;let n=typeof e==`number`?e.toString():e;return t.every(e=>(e.lastIndex=0,e.test(n)))}function E(e){let t=l(e);return Array.isArray(t)?t.length:typeof t==`object`?Object.keys(t).length:typeof t==`number`?isNaN(t)?0:t:String(t).length}function D(e){return typeof e==`number`?e:e==null?NaN:typeof e==`string`&&e.trim()===e?+e:NaN}function O(e){return e==null?!1:typeof e==`string`}function te(e){return e.some(e=>typeof e==`function`?e.constructor.name===`AsyncFunction`:e._async)}function k(e){return e.map(e=>{if(typeof e==`function`)return null;{let t=e._params;return t?.length?t:[]}}).flat().filter(e=>!!e)}function A(e,t,...n){let r=[],i=0;for(let a of e)if(typeof a==`function`)r.push(a(t)),i++;else{let e=a._params?.length??0;r.push(a.validator(t,...n.slice(i,e))),e&&(i+=e)}return r}function j(e,t,n){let r=e=>typeof e==`boolean`?!!e:e.$valid;return n===`xor`?t.length>1?t.filter(r).length===1:t.every(r):t[n===`and`?`every`:`some`](r)}function M(e,t,n){return t.some(e=>typeof e!=`boolean`)?{$valid:j(e,t,n),...t.reduce((e,t)=>{if(typeof t==`boolean`)return e;let{$valid:n,...r}=t;return{...e,...r}},{})}:j(e,t,n)}function N(e,n){let{mode:r,message:i}=n,a=te(e),o=k(e),s;s=e.length?a?async(t,...n)=>M(t,await Promise.all(A(e,t,...n)),r):(t,...n)=>M(t,A(e,t,...n),r):e=>!1;let c=t({type:r,validator:s,message:i}),l=[...o??[]];return c._params=l,typeof c==`function`?c(...l):c}function ne(...e){return N(e,{mode:`and`,message:`The value does not match all of the provided validators`})}function re(...e){return N(e,{mode:`or`,message:`The value does not match any of the provided validators`})}function ie(...e){return N(e,{mode:`xor`,message:`The value does not match exactly one of the provided validators`})}function ae(e,n){let i,{_type:a,validator:o,_params:s,_async:c,_active:l}=m(e);i=c?async(e,...t)=>{if(C(e))try{return!await o(e,...t)}catch{return!0}return!0}:(e,...t)=>C(e)?!o(e,...t):!0;let u=t({type:a?`not(${r(a)})`:void 0,validator:i,message:n??`Error`,active:l,async:c}),d=[...s??[]];return u._params=d,typeof u==`function`?u(...d):u}function P(e,t,n){return Object.entries(c(t)).map(([t,r])=>typeof r==`function`||f(r)&&`_validator`in r?[t,y(n?e:()=>!c(e),r)]:[t,r])}function oe(e,t,n){return i(()=>{let r=P(e,t,!0),i=n?P(e,n,!1):[];return Object.fromEntries([...r,...i])})}function F(e,t,n){return e.run(()=>i(()=>n===0?!0:Array.from(t.value.entries()).slice(0,n).every(([,e])=>e===!0)))}function I({validator:e,index:t,isAsync:n,mappedResults:r,options:i}){return n?ee(async(n,...i)=>{r.value.set(t,!1);let a=await e(n,...i),o=typeof a==`boolean`?a:a?.$valid??!1;return r.value.set(t,o),a},i?.debounce??200):(n,...i)=>{r.value.set(t,!1);let a=e(n,...i);if(a instanceof Promise)return!1;let o=typeof a==`boolean`?a:a?.$valid??!1;return r.value.set(t,o),a}}function L(...n){let r=[],i=s(new Map),c=[],l=n[0],u=Array.isArray(l)?l:n,d=Array.isArray(l)&&f(n[1])?n[1]:void 0;for(let[e,n]of u.entries()){let o=a();c.push(o);let{_type:s,validator:l,_params:u,_message:f,_async:p,_active:h}=m(n),g=t({type:s,validator:I({validator:l,mappedResults:i,index:e,isAsync:p,options:d}),active:h,async:p,message:f});g._params=u;let _;_=typeof g==`function`?g(...u??[]):g;let v=F(o,i,e),b=e>0&&r[e-1]._async,x=y(v,_,{hideParams:!b});r.push(x)}return o(()=>{c.forEach(e=>e.stop()),c=[]}),{...Object.fromEntries(r.map((t,n)=>[t.type&&t.type!==e.Inline?t.type:`anonymous${n}`,t])),$debounce:0}}const R=/^https?$/,z=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,B=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i;function V(){return RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)}const H=/^[^A-Z]*$/,U=/^[^a-z]*$/,W=/^[0-9a-fA-F]*$/,G=/^[a-zA-Z]*$/,K=/^[\w.]+$/,q=/^[a-zA-Z0-9]*$/,se=/^[a-zA-Z0-9_]*$/,ce=/^[-]?\d*(\.\d+)?$/,le=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i,ue=/(^[0-9]*$)|(^-[0-9]+$)/,de=/^\d*(\.\d+)?$/,fe=t({type:`alpha`,validator(e,t){return d(e)?!0:t?.allowSymbols?T(e,K):T(e,G)},message:`The value must be alphabetical`}),pe=t({type:`alphaNum`,validator(e,t){return d(e)?!0:t?.allowSymbols?T(e,se):T(e,q)},message:`The value must be alpha-numeric`}),me=t({type:`atLeastOne`,validator:(e,t)=>C(e,!0,!1)&&f(e)?t?.length?t.some(t=>C(e[t])):E(e)>0:!0,message:`At least one item is required`}),he=t({type:`between`,validator:(e,t,n,r)=>{let{allowEqual:i=!0}=r??{};if(C(e)&&C(t)&&C(n)){let r=D(e),a=D(t),o=D(n);return w(r)&&w(a)&&w(o)?i?r>=a&&r<=o:r>a&&r<o:!0}return!0},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`}),ge=t({type:`boolean`,validator:e=>C(e)?typeof e==`boolean`:!0,message:`The value must be a native boolean`}),_e=t({type:`checked`,validator:e=>e===!0,message:`The field must be checked`});function J({type:e,operation:n}){let r=(e,t)=>{switch(n){case`contains`:return e.includes(t);case`startsWith`:return e.startsWith(t);case`endsWith`:return e.endsWith(t)}},i=e=>{switch(n){case`contains`:return`The value must contain ${e}`;case`startsWith`:return`The value must start with ${e}`;case`endsWith`:return`The value must end with ${e}`}};return t({type:e,validator(e,t){return C(e)&&C(t)&&O(e)&&O(t)?r(e,t):!0},message({$params:[e]}){return i(e)}})}const ve=J({type:`contains`,operation:`contains`}),ye=t({type:`date`,validator:e=>C(e)?e instanceof Date:!0,message:`The value must be a native Date`});function be(){return navigator.languages==null?navigator.language:navigator.languages[0]}function Y(e){return e?new Intl.DateTimeFormat(be(),{dateStyle:`short`}).format(new Date(e)):`?`}const xe=t({type:`dateAfter`,validator:(e,t,n)=>{let{allowEqual:r=!0}=n??{};return C(e)&&C(t)?b(e)&&b(t)?(r?x(e).getTime()>=x(t).getTime():x(e).getTime()>x(t).getTime())?!0:{$valid:!1,error:`date-not-after`}:{$valid:!1,error:`value-or-parameter-not-a-date`}:!0},message:({$params:[e],error:t})=>t===`value-or-parameter-not-a-date`?`The values must be dates`:`The date must be after ${Y(e)}`}),Se=t({type:`dateBefore`,validator:(e,t,n)=>{let{allowEqual:r=!0}=n??{};return C(e)&&C(t)?b(e)&&b(t)?(r?x(e).getTime()<=x(t).getTime():x(e).getTime()<x(t).getTime())?!0:{$valid:!1,error:`date-not-before`}:{$valid:!1,error:`value-or-parameter-not-a-date`}:!0},message:({$params:[e],error:t})=>t===`value-or-parameter-not-a-date`?`The values must be dates`:`The date must be before ${Y(e)}`}),Ce=t({type:`dateBetween`,validator:(e,t,n,r)=>{let{allowEqual:i=!0}=r??{};return b(e)&&b(t)&&b(n)?i?x(e).getTime()>=x(t).getTime()&&x(e).getTime()<=x(n).getTime():x(e).getTime()>x(t).getTime()&&x(e).getTime()<x(n).getTime():!0},message:({$params:[e,t]})=>`The date must be between ${Y(e)} and ${Y(t)}`}),we=t({type:`decimal`,validator(e){return d(e)?!0:T(e,ce)},message:`The value must be decimal`}),Te=t({type:`email`,validator(e){return d(e)?!0:T(e,le)},message:`The value must be a valid email address`}),Ee=t({type:`emoji`,validator(e){return d(e)?!0:V().test(e)},message:`The value should be a valid emoji`}),De=J({type:`endsWith`,operation:`endsWith`}),Oe=t({type:`exactDigits`,validator:(e,t)=>{if(C(e,!1)&&C(t)){if(w(t)){let n=RegExp(`^\\d{${t}}$`);return T(e.toString(),n)}return!0}return!0},message:({$params:[e]})=>`The value should have exactly ${e} digits`}),ke=t({type:`exactLength`,validator:(e,t)=>C(e,!1)&&C(t)?w(t)?E(e)===t:!1:!0,message:({$params:[e]})=>`The value must be exactly ${e} characters long`}),Ae=t({type:`exactValue`,validator:(e,t)=>C(e)&&C(t)&&w(t)&&!isNaN(D(e))?D(e)===t:!0,message:({$params:[e]})=>`The value must be equal to ${e}`}),je=t({type:`file`,validator:e=>C(e)?u(e):!0,message:`The value must be a native File`}),Me=t({type:`fileType`,validator:(e,t)=>C(e)&&u(e)?t.includes(e.type):!0,message({$params:[e]}){return`File type is not allowed. Allowed types are: ${e.map(e=>e.split(`/`)[1]).join(`, `)}.`}}),Ne=t({type:`hexadecimal`,validator(e){return d(e)?!0:T(e,W)},message:`The value must be hexadecimal`}),Pe=t({type:`hostname`,validator(e){return d(e)?!0:T(e,z)},message:`The value is not a valid hostname`}),X=t({type:`url`,validator(e,t={}){try{if(d(e))return!0;let{protocol:n}=t||{},r=new URL(e);return!z.test(r.hostname)||n&&!n.test(r.protocol.endsWith(`:`)?r.protocol.slice(0,-1):r.protocol)?!1:T(e,B)}catch{return!1}},message:`The value must be a valid URL`}),Fe=t({type:`httpUrl`,validator(e,t={}){if(d(e))return!0;let{protocol:n=R}=t||{};return X({protocol:n}).exec(e)},message:`The value is not a valid http URL address`}),Ie=t({type:`integer`,validator(e){return d(e)?!0:T(e,ue)},message:`The value must be an integer`});function Le(e){if(e.length>3||e.length===0||e[0]===`0`&&e!==`0`||!e.match(/^\d+$/))return!1;let t=e|0;return t>=0&&t<=255}const Re=t({type:`ipv4Address`,validator(e){if(d(e))return!0;if(typeof e!=`string`)return!1;let t=e.split(`.`);return t.length===4&&t.every(Le)},message:`The value is not a valid IPv4 address`});function ze(e){return h(v((e,t)=>C(e)&&C(t)?t===e:!0,[i(()=>c(e))]),({$params:[e]})=>`Value should be ${e}.`)}const Be=t({type:`lowercase`,validator(e){return d(e)?!0:T(e,H)},message:`The value must be lowercase`}),Ve=t({type:`macAddress`,validator(e,t=`:`){if(d(e))return!0;if(typeof e!=`string`)return!1;let n=typeof t==`string`&&t!==``?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return n!==null&&(n.length===6||n.length===8)&&n.every(He)},message:`The value is not a valid MAC Address`}),He=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/),Ue=t({type:`maxFileSize`,validator:(e,t)=>C(e)&&u(e)?{$valid:e.size<=t,fileSize:e.size}:!0,message({$params:[e],fileSize:t}){return`File size (${S(t)}) cannot exceed ${S(e)}`}});function Z({type:e,direction:n}){let r=(e,t,r)=>n===`min`?r?e>=t:e>t:r?e<=t:e<t,i=(e,t)=>Array.isArray(e)?n===`min`?`The list must have at least ${t} items`:`The list must have at most ${t} items`:n===`min`?`The value must be at least ${t} characters long`:`The value must be at most ${t} characters long`;return t({type:e,validator:(e,t,n)=>{let{allowEqual:i=!0}=n??{};return C(e,!1)&&C(t)&&w(t)?r(E(e),t,i):!0},message:({$value:e,$params:[t]})=>i(e,t)})}const We=Z({type:`maxLength`,direction:`max`});function Q({type:e,direction:n}){let r=(e,t,r)=>n===`min`?r?e>=t:e>t:r?e<=t:e<t,i=(e,t)=>n===`min`?t?`The value must be greater than or equal to ${e}`:`The value must be greater than ${e}`:t?`The value must be less than or equal to ${e}`:`The value must be less than ${e}`;return t({type:e,validator:(e,t,n)=>{let{allowEqual:i=!0}=n??{};return C(e)&&C(t)&&!isNaN(D(e))&&!isNaN(D(t))?r(D(e),D(t),i):!0},message:({$params:[e,t]})=>{let{allowEqual:n=!0}=t??{};return i(e,n)}})}const Ge=Q({type:`maxValue`,direction:`max`}),Ke=t({type:`minFileSize`,validator:(e,t)=>C(e)&&u(e)?{$valid:e.size>=t,fileSize:e.size}:!0,message({$params:[e],fileSize:t}){return`File size (${S(t)}) must be at least ${S(e)}`}}),qe=Z({type:`minLength`,direction:`min`}),Je=Q({type:`minValue`,direction:`min`});function $(e){let t=Object.keys(e).filter(t=>typeof e[e[t]]!=`number`),n={};for(let r of t)n[r]=e[r];return Object.values(n)}function Ye(e){return h(v((e,t)=>C(e)&&!d(t)?$(t).includes(e):!0,[i(()=>c(e))]),({$params:[e]})=>`The value must be one of the following: ${Object.values(e).join(`, `)}`)}const Xe=t({type:`number`,validator:e=>C(e)?w(e):!0,message:`The value must be a native number`}),Ze=t({type:`numeric`,validator(e){return d(e)?!0:T(e,de)},message:`The value must be numeric`}),Qe=t({type:`oneOf`,validator(e,t){return C(e)&&C(t,!1)?t.includes(e):!0},message:({$params:[e]})=>`The value must be one of the following: ${e.join(`, `)}`}),$e=t({type:`regex`,validator(e,t){return C(e)?T(e,...Array.isArray(t)?t:[t]):!0},message:`The value must match the required pattern`}),et=t({type:`required`,validator:e=>C(e,!0,!1),message:`This field is required`,required:!0}),tt=t({type:`required`,validator(e,t){return t?C(e):!0},message:`This field is required`,active({$params:[e]}){return e}}),nt=t({type:`required`,validator(e,t){return t?!0:C(e)},message:`This field is required`,active({$params:[e]}){return!e}}),rt=t({type:`sameAs`,validator(e,t,n){return d(e)?!0:e===t},message({$params:[e,t=`other`]}){return`The value must be equal to the ${t} value`}}),it=J({type:`startsWith`,operation:`startsWith`}),at=t({type:`string`,validator:e=>C(e)?typeof e==`string`:!0,message:`The value must be a string`});function ot(){return(()=>!0)}const st=t({type:`uppercase`,validator(e){return d(e)?!0:T(e,U)},message:`The value must be uppercase`});export{fe as alpha,pe as alphaNum,ne as and,y as applyIf,oe as assignIf,me as atLeastOne,he as between,ge as boolean,_e as checked,ve as contains,ye as date,xe as dateAfter,Se as dateBefore,Ce as dateBetween,we as decimal,Te as email,Ee as emoji,De as endsWith,Oe as exactDigits,ke as exactLength,Ae as exactValue,je as file,Me as fileType,E as getSize,Ne as hexadecimal,Pe as hostname,Fe as httpUrl,Ie as integer,Re as ipv4Address,b as isDate,d as isEmpty,C as isFilled,w as isNumber,ze as literal,Be as lowercase,Ve as macAddress,T as matchRegex,Ue as maxFileSize,We as maxLength,Ge as maxValue,Ke as minFileSize,qe as minLength,Je as minValue,Ye as nativeEnum,ae as not,Xe as number,Ze as numeric,Qe as oneOf,re as or,L as pipe,$e as regex,et as required,tt as requiredIf,nt as requiredUnless,rt as sameAs,it as startsWith,at as string,x as toDate,D as toNumber,ot as type,st as uppercase,X as url,_ as withAsync,h as withMessage,v as withParams,g as withTooltip,ie as xor};
|
|
7
|
+
import{InternalRuleType as e,createRule as t,unwrapRuleParameters as n}from"@regle/core";import{capitalize as r,computed as i,effectScope as a,onScopeDispose as o,ref as s,toValue as c,unref as l}from"vue";function u(e){return e?.constructor?.name==`File`}function d(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):u(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:f(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}function f(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){return(f(e)||typeof e==`function`)&&`_validator`in e}function m(t){let n,r,i=[],a=``,o=!1,s;if(typeof t==`function`&&!(`_validator`in t))n=e.Inline,r=t,o=t.constructor.name===`AsyncFunction`;else if(p(t))({_type:n,validator:r,_message:a,_async:o,_params:i,_active:s}=t);else throw Error(`Cannot extract validator from invalid rule`);return{_type:n,validator:r,_params:i,_message:a,_async:o,_active:s}}function h(e,n){let{_type:r,validator:i,_active:a,_params:o,_async:s}=m(e),c=t({type:r,validator:i,active:a,message:n,async:s}),l=o??[];if(c._params=l,c._message_patched=!0,typeof c==`function`){if(o!=null){let e=c(...l);return e._message_patched=!0,e}return c}else return c}function g(e,n){let{_type:r,validator:i,_active:a,_params:o,_message:s,_async:c}=m(e),l=t({type:r,validator:i,active:a,message:s,tooltip:n,async:c}),u=o??[];if(l._params=u,l._tooltip_patched=!0,typeof l==`function`){let e=l(...u);return l._tooltip_patched=!0,e}else return l}function _(n,r){let i,{_type:a,_params:o,_message:s,_active:c}=m(n);i=typeof n==`function`?async(e,...t)=>n(e,...t):async(...e)=>n.validator(e);let l=(o??[])?.concat(r),u=t({type:a??e.Async,validator:i,message:s,async:!0,active:c});return u._params=l,u(...r??[])}function v(n,r){let i,{_type:a,_params:o,_message:s,_active:c,_async:l}=m(n);i=typeof n==`function`?(e,...t)=>n(e,...t):n.validator;let u=(o??[])?.concat(r),d=t({type:a??e.Inline,validator:i,message:s,active:c,async:l});return d._params=u,d(...r)}function y(e,r,i){let{_type:a,validator:o,_params:s,_message:c,_async:l}=m(r),u=(s??[]).concat(i?.hideParams?[]:[e]);function d(t,...r){let[i]=n([e]);return i?o(t,...r):!0}function f(){let[t]=n([e]);return t}let p=t({type:a,validator:d,active:f,message:c,async:l});return p._params=u,typeof p==`function`?p(...u):p}function b(e){if(d(e))return!1;let t=null;if(e instanceof Date)t=e;else if(typeof e==`string`){let n=new Date(e);if(n.toString()===`Invalid Date`)return!1;t=n}return!!t}function x(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 ee(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 S(e){return e===void 0?`0 bytes`:e<1024?`${e} bytes`:e<1024*1024?`${(e/1024).toFixed(2)} kb`:e<1024*1024*1024?`${(e/1024/1024).toFixed(2)} mb`:`${(e/1024/1024/1024).toFixed(2)} gb`}function C(e,t=!0,n=!0){return!d(typeof e==`string`?e.trim():e,t,n)}function w(e){return e==null?!1:typeof e==`number`?!isNaN(e):!1}function T(e,...t){if(d(e))return!0;let n=typeof e==`number`?e.toString():e;return t.every(e=>(e.lastIndex=0,e.test(n)))}function E(e){let t=l(e);return Array.isArray(t)?t.length:typeof t==`object`?Object.keys(t).length:typeof t==`number`?isNaN(t)?0:t:String(t).length}function D(e){return typeof e==`number`?e:e==null?NaN:typeof e==`string`&&e.trim()===e?+e:NaN}function O(e){return e==null?!1:typeof e==`string`}function te(e){return e.some(e=>typeof e==`function`?e.constructor.name===`AsyncFunction`:e._async)}function k(e){return e.map(e=>{if(typeof e==`function`)return null;{let t=e._params;return t?.length?t:[]}}).flat().filter(e=>!!e)}function A(e,t,...n){let r=[],i=0;for(let a of e)if(typeof a==`function`)r.push(a(t)),i++;else{let e=a._params?.length??0;r.push(a.validator(t,...n.slice(i,i+e))),e&&(i+=e)}return r}function j(e,t,n){let r=e=>typeof e==`boolean`?!!e:e.$valid;return n===`xor`?t.length>1?t.filter(r).length===1:t.every(r):t[n===`and`?`every`:`some`](r)}function M(e,t,n){return t.some(e=>typeof e!=`boolean`)?{$valid:j(e,t,n),...t.reduce((e,t)=>{if(typeof t==`boolean`)return e;let{$valid:n,...r}=t;return{...e,...r}},{})}:j(e,t,n)}function N(e,n){let{mode:r,message:i}=n,a=te(e),o=k(e),s;s=e.length?a?async(t,...n)=>M(t,await Promise.all(A(e,t,...n)),r):(t,...n)=>M(t,A(e,t,...n),r):e=>!1;let c=t({type:r,validator:s,message:i}),l=[...o??[]];return c._params=l,typeof c==`function`?c(...l):c}function ne(...e){return N(e,{mode:`and`,message:`The value does not match all of the provided validators`})}function re(...e){return N(e,{mode:`or`,message:`The value does not match any of the provided validators`})}function ie(...e){return N(e,{mode:`xor`,message:`The value does not match exactly one of the provided validators`})}function ae(e,n){let i,{_type:a,validator:o,_params:s,_async:c,_active:l}=m(e);i=c?async(e,...t)=>{if(C(e))try{return!await o(e,...t)}catch{return!0}return!0}:(e,...t)=>C(e)?!o(e,...t):!0;let u=t({type:a?`not(${r(a)})`:void 0,validator:i,message:n??`Error`,active:l,async:c}),d=[...s??[]];return u._params=d,typeof u==`function`?u(...d):u}function P(e,t,n){return Object.entries(c(t)).map(([t,r])=>typeof r==`function`||f(r)&&`_validator`in r?[t,y(n?e:()=>!c(e),r)]:[t,r])}function oe(e,t,n){return i(()=>{let r=P(e,t,!0),i=n?P(e,n,!1):[];return Object.fromEntries([...r,...i])})}function F(e,t,n){return e.run(()=>i(()=>n===0?!0:Array.from(t.value.entries()).slice(0,n).every(([,e])=>e===!0)))}function I({validator:e,index:t,isAsync:n,mappedResults:r,options:i}){return n?ee(async(n,...i)=>{r.value.set(t,!1);let a=await e(n,...i),o=typeof a==`boolean`?a:a?.$valid??!1;return r.value.set(t,o),a},i?.debounce??200):(n,...i)=>{r.value.set(t,!1);let a=e(n,...i);if(a instanceof Promise)return!1;let o=typeof a==`boolean`?a:a?.$valid??!1;return r.value.set(t,o),a}}function L(...n){let r=[],i=s(new Map),c=[],l=n[0],u=Array.isArray(l)?l:n,d=Array.isArray(l)&&f(n[1])?n[1]:void 0;for(let[e,n]of u.entries()){let o=a();c.push(o);let{_type:s,validator:l,_params:u,_message:f,_async:p,_active:h}=m(n),g=t({type:s,validator:I({validator:l,mappedResults:i,index:e,isAsync:p,options:d}),active:h,async:p,message:f});g._params=u;let _;_=typeof g==`function`?g(...u??[]):g;let v=F(o,i,e),b=e>0&&r[e-1]._async,x=y(v,_,{hideParams:!b});r.push(x)}return o(()=>{c.forEach(e=>e.stop()),c=[]}),{...Object.fromEntries(r.map((t,n)=>[t.type&&t.type!==e.Inline?t.type:`anonymous${n}`,t])),$debounce:0}}const R=/^https?$/,z=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,B=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i;function V(){return RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)}const H=/^[^A-Z]*$/,U=/^[^a-z]*$/,W=/^[0-9a-fA-F]*$/,G=/^[a-zA-Z]*$/,K=/^[\w.]+$/,q=/^[a-zA-Z0-9]*$/,se=/^[a-zA-Z0-9_]*$/,ce=/^[-]?\d*(\.\d+)?$/,le=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i,ue=/(^[0-9]*$)|(^-[0-9]+$)/,de=/^\d*(\.\d+)?$/,fe=t({type:`alpha`,validator(e,t){return d(e)?!0:t?.allowSymbols?T(e,K):T(e,G)},message:`The value must be alphabetical`}),pe=t({type:`alphaNum`,validator(e,t){return d(e)?!0:t?.allowSymbols?T(e,se):T(e,q)},message:`The value must be alpha-numeric`}),me=t({type:`atLeastOne`,validator:(e,t)=>C(e,!0,!1)&&f(e)?t?.length?t.some(t=>C(e[t])):E(e)>0:!0,message:`At least one item is required`}),he=t({type:`between`,validator:(e,t,n,r)=>{let{allowEqual:i=!0}=r??{};if(C(e)&&C(t)&&C(n)){let r=D(e),a=D(t),o=D(n);return w(r)&&w(a)&&w(o)?i?r>=a&&r<=o:r>a&&r<o:!0}return!0},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`}),ge=t({type:`boolean`,validator:e=>C(e)?typeof e==`boolean`:!0,message:`The value must be a native boolean`}),_e=t({type:`checked`,validator:e=>e===!0,message:`The field must be checked`});function J({type:e,operation:n}){let r=(e,t)=>{switch(n){case`contains`:return e.includes(t);case`startsWith`:return e.startsWith(t);case`endsWith`:return e.endsWith(t)}},i=e=>{switch(n){case`contains`:return`The value must contain ${e}`;case`startsWith`:return`The value must start with ${e}`;case`endsWith`:return`The value must end with ${e}`}};return t({type:e,validator(e,t){return C(e)&&C(t)&&O(e)&&O(t)?r(e,t):!0},message({$params:[e]}){return i(e)}})}const ve=J({type:`contains`,operation:`contains`}),ye=t({type:`date`,validator:e=>C(e)?e instanceof Date:!0,message:`The value must be a native Date`});function be(){return navigator.languages==null?navigator.language:navigator.languages[0]}function Y(e){return e?new Intl.DateTimeFormat(be(),{dateStyle:`short`}).format(new Date(e)):`?`}const xe=t({type:`dateAfter`,validator:(e,t,n)=>{let{allowEqual:r=!0}=n??{};return C(e)&&C(t)?b(e)&&b(t)?(r?x(e).getTime()>=x(t).getTime():x(e).getTime()>x(t).getTime())?!0:{$valid:!1,error:`date-not-after`}:{$valid:!1,error:`value-or-parameter-not-a-date`}:!0},message:({$params:[e],error:t})=>t===`value-or-parameter-not-a-date`?`The values must be dates`:`The date must be after ${Y(e)}`}),Se=t({type:`dateBefore`,validator:(e,t,n)=>{let{allowEqual:r=!0}=n??{};return C(e)&&C(t)?b(e)&&b(t)?(r?x(e).getTime()<=x(t).getTime():x(e).getTime()<x(t).getTime())?!0:{$valid:!1,error:`date-not-before`}:{$valid:!1,error:`value-or-parameter-not-a-date`}:!0},message:({$params:[e],error:t})=>t===`value-or-parameter-not-a-date`?`The values must be dates`:`The date must be before ${Y(e)}`}),Ce=t({type:`dateBetween`,validator:(e,t,n,r)=>{let{allowEqual:i=!0}=r??{};return b(e)&&b(t)&&b(n)?i?x(e).getTime()>=x(t).getTime()&&x(e).getTime()<=x(n).getTime():x(e).getTime()>x(t).getTime()&&x(e).getTime()<x(n).getTime():!0},message:({$params:[e,t]})=>`The date must be between ${Y(e)} and ${Y(t)}`}),we=t({type:`decimal`,validator(e){return d(e)?!0:T(e,ce)},message:`The value must be decimal`}),Te=t({type:`email`,validator(e){return d(e)?!0:T(e,le)},message:`The value must be a valid email address`}),Ee=t({type:`emoji`,validator(e){return d(e)?!0:V().test(e)},message:`The value should be a valid emoji`}),De=J({type:`endsWith`,operation:`endsWith`}),Oe=t({type:`exactDigits`,validator:(e,t)=>{if(C(e,!1)&&C(t)){if(w(t)){let n=RegExp(`^\\d{${t}}$`);return T(e.toString(),n)}return!0}return!0},message:({$params:[e]})=>`The value should have exactly ${e} digits`}),ke=t({type:`exactLength`,validator:(e,t)=>C(e,!1)&&C(t)?w(t)?E(e)===t:!1:!0,message:({$params:[e]})=>`The value must be exactly ${e} characters long`}),Ae=t({type:`exactValue`,validator:(e,t)=>C(e)&&C(t)&&w(t)&&!isNaN(D(e))?D(e)===t:!0,message:({$params:[e]})=>`The value must be equal to ${e}`}),je=t({type:`file`,validator:e=>C(e)?u(e):!0,message:`The value must be a native File`}),Me=t({type:`fileType`,validator:(e,t)=>C(e)&&u(e)?t.includes(e.type):!0,message({$params:[e]}){return`File type is not allowed. Allowed types are: ${e.map(e=>e.split(`/`)[1]).join(`, `)}.`}}),Ne=t({type:`hexadecimal`,validator(e){return d(e)?!0:T(e,W)},message:`The value must be hexadecimal`}),Pe=t({type:`hostname`,validator(e){return d(e)?!0:T(e,z)},message:`The value is not a valid hostname`}),X=t({type:`url`,validator(e,t={}){try{if(d(e))return!0;let{protocol:n}=t||{},r=new URL(e);return!z.test(r.hostname)||n&&!n.test(r.protocol.endsWith(`:`)?r.protocol.slice(0,-1):r.protocol)?!1:T(e,B)}catch{return!1}},message:`The value must be a valid URL`}),Fe=t({type:`httpUrl`,validator(e,t={}){if(d(e))return!0;let{protocol:n=R}=t||{};return X({protocol:n}).exec(e)},message:`The value is not a valid http URL address`}),Ie=t({type:`integer`,validator(e){return d(e)?!0:T(e,ue)},message:`The value must be an integer`});function Le(e){if(e.length>3||e.length===0||e[0]===`0`&&e!==`0`||!e.match(/^\d+$/))return!1;let t=e|0;return t>=0&&t<=255}const Re=t({type:`ipv4Address`,validator(e){if(d(e))return!0;if(typeof e!=`string`)return!1;let t=e.split(`.`);return t.length===4&&t.every(Le)},message:`The value is not a valid IPv4 address`});function ze(e){return h(v((e,t)=>C(e)&&C(t)?t===e:!0,[i(()=>c(e))]),({$params:[e]})=>`Value should be ${e}.`)}const Be=t({type:`lowercase`,validator(e){return d(e)?!0:T(e,H)},message:`The value must be lowercase`}),Ve=t({type:`macAddress`,validator(e,t=`:`){if(d(e))return!0;if(typeof e!=`string`)return!1;let n=typeof t==`string`&&t!==``?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return n!==null&&(n.length===6||n.length===8)&&n.every(He)},message:`The value is not a valid MAC Address`}),He=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/),Ue=t({type:`maxFileSize`,validator:(e,t)=>C(e)&&u(e)?{$valid:e.size<=t,fileSize:e.size}:!0,message({$params:[e],fileSize:t}){return`File size (${S(t)}) cannot exceed ${S(e)}`}});function Z({type:e,direction:n}){let r=(e,t,r)=>n===`min`?r?e>=t:e>t:r?e<=t:e<t,i=(e,t)=>Array.isArray(e)?n===`min`?`The list must have at least ${t} items`:`The list must have at most ${t} items`:n===`min`?`The value must be at least ${t} characters long`:`The value must be at most ${t} characters long`;return t({type:e,validator:(e,t,n)=>{let{allowEqual:i=!0}=n??{};return C(e,!1)&&C(t)&&w(t)?r(E(e),t,i):!0},message:({$value:e,$params:[t]})=>i(e,t)})}const We=Z({type:`maxLength`,direction:`max`});function Q({type:e,direction:n}){let r=(e,t,r)=>n===`min`?r?e>=t:e>t:r?e<=t:e<t,i=(e,t)=>n===`min`?t?`The value must be greater than or equal to ${e}`:`The value must be greater than ${e}`:t?`The value must be less than or equal to ${e}`:`The value must be less than ${e}`;return t({type:e,validator:(e,t,n)=>{let{allowEqual:i=!0}=n??{};return C(e)&&C(t)&&!isNaN(D(e))&&!isNaN(D(t))?r(D(e),D(t),i):!0},message:({$params:[e,t]})=>{let{allowEqual:n=!0}=t??{};return i(e,n)}})}const Ge=Q({type:`maxValue`,direction:`max`}),Ke=t({type:`minFileSize`,validator:(e,t)=>C(e)&&u(e)?{$valid:e.size>=t,fileSize:e.size}:!0,message({$params:[e],fileSize:t}){return`File size (${S(t)}) must be at least ${S(e)}`}}),qe=Z({type:`minLength`,direction:`min`}),Je=Q({type:`minValue`,direction:`min`});function $(e){let t=Object.keys(e).filter(t=>typeof e[e[t]]!=`number`),n={};for(let r of t)n[r]=e[r];return Object.values(n)}function Ye(e){return h(v((e,t)=>C(e)&&!d(t)?$(t).includes(e):!0,[i(()=>c(e))]),({$params:[e]})=>`The value must be one of the following: ${Object.values(e).join(`, `)}`)}const Xe=t({type:`number`,validator:e=>C(e)?w(e):!0,message:`The value must be a native number`}),Ze=t({type:`numeric`,validator(e){return d(e)?!0:T(e,de)},message:`The value must be numeric`}),Qe=t({type:`oneOf`,validator(e,t){return C(e)&&C(t,!1)?t.includes(e):!0},message:({$params:[e]})=>`The value must be one of the following: ${e.join(`, `)}`}),$e=t({type:`regex`,validator(e,t){return C(e)?T(e,...Array.isArray(t)?t:[t]):!0},message:`The value must match the required pattern`}),et=t({type:`required`,validator:e=>C(e,!0,!1),message:`This field is required`,required:!0}),tt=t({type:`required`,validator(e,t){return t?C(e):!0},message:`This field is required`,active({$params:[e]}){return e}}),nt=t({type:`required`,validator(e,t){return t?!0:C(e)},message:`This field is required`,active({$params:[e]}){return!e}}),rt=t({type:`sameAs`,validator(e,t,n){return d(e)?!0:e===t},message({$params:[e,t=`other`]}){return`The value must be equal to the ${t} value`}}),it=J({type:`startsWith`,operation:`startsWith`}),at=t({type:`string`,validator:e=>C(e)?typeof e==`string`:!0,message:`The value must be a string`});function ot(){return(()=>!0)}const st=t({type:`uppercase`,validator(e){return d(e)?!0:T(e,U)},message:`The value must be uppercase`});export{fe as alpha,pe as alphaNum,ne as and,y as applyIf,oe as assignIf,me as atLeastOne,he as between,ge as boolean,_e as checked,ve as contains,ye as date,xe as dateAfter,Se as dateBefore,Ce as dateBetween,we as decimal,Te as email,Ee as emoji,De as endsWith,Oe as exactDigits,ke as exactLength,Ae as exactValue,je as file,Me as fileType,E as getSize,Ne as hexadecimal,Pe as hostname,Fe as httpUrl,Ie as integer,Re as ipv4Address,b as isDate,d as isEmpty,C as isFilled,w as isNumber,ze as literal,Be as lowercase,Ve as macAddress,T as matchRegex,Ue as maxFileSize,We as maxLength,Ge as maxValue,Ke as minFileSize,qe as minLength,Je as minValue,Ye as nativeEnum,ae as not,Xe as number,Ze as numeric,Qe as oneOf,re as or,L as pipe,$e as regex,et as required,tt as requiredIf,nt as requiredUnless,rt as sameAs,it as startsWith,at as string,x as toDate,D as toNumber,ot as type,st as uppercase,X as url,_ as withAsync,h as withMessage,v as withParams,g as withTooltip,ie as xor};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/rules",
|
|
3
|
-
"version": "1.18.0
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "Collection of rules and helpers for Regle",
|
|
5
5
|
"homepage": "https://reglejs.dev/",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,19 +35,19 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"type-fest": "5.4.
|
|
39
|
-
"@regle/core": "1.18.0
|
|
38
|
+
"type-fest": "5.4.3",
|
|
39
|
+
"@regle/core": "1.18.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@types/node": "
|
|
42
|
+
"@types/node": "24.1.0",
|
|
43
43
|
"@vue/reactivity": "3.5.27",
|
|
44
44
|
"@vue/test-utils": "2.4.6",
|
|
45
|
-
"tsdown": "0.
|
|
46
|
-
"type-fest": "5.4.
|
|
45
|
+
"tsdown": "0.20.1",
|
|
46
|
+
"type-fest": "5.4.3",
|
|
47
47
|
"typescript": "5.9.3",
|
|
48
|
-
"vitest": "4.0.
|
|
48
|
+
"vitest": "4.0.18",
|
|
49
49
|
"vue": "3.5.27",
|
|
50
|
-
"vue-tsc": "3.2.
|
|
50
|
+
"vue-tsc": "3.2.4"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
53
53
|
"typecheck": "vue-tsc --noEmit",
|