@regle/rules 1.18.0-beta.4 → 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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @regle/rules v1.18.0-beta.4
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$1 extends string | unknown, TValue$1 extends any, TParams$1 extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TMetadata$1>, string | string[]>): RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>;
37
- declare function withMessage<TType$1 extends string | unknown, TValue$1 extends any, TParams$1 extends unknown[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TMetadata$1>, string | string[]>): RegleRuleDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>;
38
- declare function withMessage<TValue$1 extends any, TParams$1 extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: InlineRuleDeclaration<TValue$1, TParams$1, TReturn>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TReturn extends Promise<infer M> ? M : TReturn>, string | string[]>): RegleRuleDefinition<unknown, TValue$1, TParams$1, TAsync$1, TReturn extends Promise<infer M> ? M : TReturn>;
39
- declare function withMessage<TType$1 extends string | unknown, TValue$1 extends any, TParams$1 extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: (...args: any[]) => RegleRuleDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TMetadata$1>, string | string[]>): RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>;
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$1 extends string | unknown, TValue$1 extends any, TParams$1 extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TMetadata$1>, string | string[]>): RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>;
67
- declare function withTooltip<TType$1 extends string | unknown, TValue$1 extends any, TParams$1 extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TMetadata$1>, string | string[]>): RegleRuleDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>;
68
- declare function withTooltip<TValue$1 extends any, TParams$1 extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: InlineRuleDeclaration<TValue$1, TParams$1, TReturn>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TReturn extends Promise<infer M> ? M : TReturn>, string | string[]>): RegleRuleDefinition<unknown, TValue$1, TParams$1, TAsync$1, TReturn extends Promise<infer M> ? M : TReturn>;
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$1, TParams$1 extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends Promise<RegleRuleMetadataDefinition> = Promise<RegleRuleMetadataDefinition>, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn)>(rule: InlineRuleDeclaration<TValue$1, TParams$1, TReturn>, depsArray?: [...TParams$1]): RegleRuleDefinition<unknown, TValue$1, UnwrapRegleUniversalParams<TParams$1>, true, TMetadata$1>;
93
- declare function withAsync<TType$1 extends string | unknown, TValue$1 extends any, TParams$1 extends any[], TMetadata$1 extends RegleRuleMetadataDefinition>(rule: RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, true, TMetadata$1>, depsArray?: [...TParams$1]): RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, true, TMetadata$1>;
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$1 extends string | unknown, TValue$1, TParams$1 extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: InlineRuleDeclaration<TValue$1, TParams$1, TReturn> | RegleRuleDefinition<TType$1, TValue$1, any[], TAsync$1, TMetadata$1>, depsArray: [...TParams$1]): RegleRuleDefinition<TType$1, TValue$1, UnwrapRegleUniversalParams<TParams$1>, TAsync$1, TMetadata$1>;
122
- declare function withParams<TType$1 extends string | unknown, TValue$1 extends any, TParams$1 extends any[], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>, depsArray: [...TParams$1]): RegleRuleWithParamsDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1>;
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$1 extends string | unknown = unknown, TValue$1 = unknown, TParams$1 extends any[] = [], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition, TMetadata$1 extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync$1 extends boolean = (TReturn extends Promise<any> ? true : false)>(rule: RegleRuleDefinition<TType$1, TValue$1, TParams$1, TAsync$1, TMetadata$1> | InlineRuleDeclaration<TValue$1, TParams$1, TReturn>, message?: RegleRuleDefinitionWithMetadataProcessor<TValue$1, RegleRuleMetadataConsumer<TValue$1, TParams$1, TMetadata$1>, string | string[]>): RegleRuleDefinition<IsUnknown<TType$1> extends true ? 'not' : `not:${TType$1 & string}`, TValue$1, TParams$1, TAsync$1, TMetadata$1>;
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$1 extends unknown = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>, TRulesDelc extends RegleRuleDecl<TValue$1, TCustomRules> = RegleRuleDecl<TValue$1, TCustomRules>>(_condition: MaybeRefOrGetter<Maybe<boolean>>, rules: MaybeRefOrGetter<TRulesDelc>, otherwiseRules?: MaybeRefOrGetter<TRulesDelc>): ComputedRef<TRulesDelc>;
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$1 extends string | number>(literal: MaybeRefOrGetter<TValue$1>): RegleRuleDefinition<'literal', TValue$1, [literal: TValue$1], false, boolean, MaybeInput<TValue$1>, string | number, true>;
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
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @regle/rules v1.18.0-beta.4
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$1 = new Date(value);
252
- if (date$1.toString() === "Invalid Date") return false;
253
- possibleDate = date$1;
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: type$1, operation }) {
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: type$1,
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$1) {
1195
- if (date$1) return new Intl.DateTimeFormat(getUserLocale(), { dateStyle: "short" }).format(new Date(date$1));
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 = /* @__PURE__ */ new RegExp(`^\\d{${count}}$`);
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$1) => type$1.split("/")[1]).join(", ")}.`;
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$1 = +nibble | 0;
1740
- return numeric$1 >= 0 && numeric$1 <= 255;
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$1) {
1784
- return withMessage(withParams((value, literal$2) => {
1785
- if (isFilled(value) && isFilled(literal$2)) return literal$2 === value;
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$1))]), ({ $params: [literal$2] }) => `Value should be ${literal$2}.`);
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: type$1, direction }) {
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: type$1,
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$1}] Parameter isn't a number, got parameter: ${limit}`);
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: type$1, direction }) {
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: type$1,
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$1}] Value or parameter isn't a number, got value: ${value}, parameter: ${limit}`);
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$1) => {
2128
- if (isFilled(value) && !isEmpty(enumLike$1)) return getValidEnumValues(enumLike$1).includes(value);
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$1] }) => `The value must be one of the following: ${Object.values(enumLike$1).join(", ")}`);
2130
+ }, [computed(() => toValue(enumLike))]), ({ $params: [enumLike] }) => `The value must be one of the following: ${Object.values(enumLike).join(", ")}`);
2131
2131
  }
2132
2132
 
2133
2133
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @regle/rules v1.18.0-beta.4
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-beta.4",
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.1",
39
- "@regle/core": "1.18.0-beta.4"
38
+ "type-fest": "5.4.3",
39
+ "@regle/core": "1.18.0"
40
40
  },
41
41
  "devDependencies": {
42
- "@types/node": "22.19.7",
42
+ "@types/node": "24.1.0",
43
43
  "@vue/reactivity": "3.5.27",
44
44
  "@vue/test-utils": "2.4.6",
45
- "tsdown": "0.18.4",
46
- "type-fest": "5.4.1",
45
+ "tsdown": "0.20.1",
46
+ "type-fest": "5.4.3",
47
47
  "typescript": "5.9.3",
48
- "vitest": "4.0.17",
48
+ "vitest": "4.0.18",
49
49
  "vue": "3.5.27",
50
- "vue-tsc": "3.2.2"
50
+ "vue-tsc": "3.2.4"
51
51
  },
52
52
  "scripts": {
53
53
  "typecheck": "vue-tsc --noEmit",