@regle/rules 1.2.3 → 1.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,24 @@
1
- import { RegleRuleMetadataDefinition, RegleRuleWithParamsDefinition, RegleRuleDefinitionWithMetadataProcessor, RegleRuleMetadataConsumer, RegleRuleDefinition, InlineRuleDeclaration, UnwrapRegleUniversalParams, Maybe, FormRuleDeclaration, CommonAlphaOptions, MaybeInput, CommonComparisonOptions, MaybeReadonly } from '@regle/core';
2
- import { Ref, MaybeRefOrGetter, MaybeRef } from 'vue';
3
-
1
+ import { CommonAlphaOptions, CommonComparisonOptions, FormRuleDeclaration, InlineRuleDeclaration, Maybe, MaybeInput, MaybeReadonly, RegleRuleDefinition, RegleRuleDefinitionWithMetadataProcessor, RegleRuleMetadataConsumer, RegleRuleMetadataDefinition, RegleRuleWithParamsDefinition, UnwrapRegleUniversalParams } from "@regle/core";
2
+ import { MaybeRef, MaybeRefOrGetter, Ref } from "vue";
3
+
4
+ //#region src/helpers/withMessage.d.ts
5
+ /**
6
+ * The withMessage wrapper lets you associate an error message with a rule. Pass your rule as the first argument and the error message as the second.
7
+ *
8
+ * ```ts
9
+ * const { r$ } = useRegle({ name: '' }, {
10
+ name: {
11
+ customRule1: withMessage((value) => !!value, "Custom Error"),
12
+ customRule2: withMessage(customRuleInlineWithMetaData, "Custom Error"),
13
+ customRule3: withMessage(
14
+ customRuleInlineWithMetaData,
15
+ ({ $value, foo }) => `Custom Error: ${$value} ${foo}`
16
+ ),
17
+ }
18
+ })
19
+ * ```
20
+ * Docs: {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withmessage}
21
+ */
4
22
  /**
5
23
  * The withMessage wrapper lets you associate an error message with a rule. Pass your rule as the first argument and the error message as the second.
6
24
  *
@@ -18,17 +36,21 @@ import { Ref, MaybeRefOrGetter, MaybeRef } from 'vue';
18
36
  * ```
19
37
  * Docs: {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withmessage}
20
38
  */
21
- declare function withMessage<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<TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetadata>;
22
- declare function withMessage<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<TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
23
- 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<TValue, TParams, TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
39
+ declare function withMessage<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<TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetadata>;
40
+ declare function withMessage<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<TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
41
+ 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<TValue, TParams, TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
24
42
 
43
+ //#endregion
44
+ //#region src/helpers/withTooltip.d.ts
25
45
  /**
26
46
  * The withTooltip wrapper allows you to display additional messages for your field that aren’t necessarily errors. Tooltips are aggregated and accessible via $fields.xxx.$tooltips .
27
47
  */
28
- declare function withTooltip<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<TValue, TParams, TAsync, TMetadata>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetadata>;
29
- declare function withTooltip<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<TValue, TParams, TAsync, TMetadata>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
30
- 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<TValue, TParams, TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
48
+ declare function withTooltip<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<TValue, TParams, TAsync, TMetadata>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetadata>;
49
+ declare function withTooltip<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<TValue, TParams, TAsync, TMetadata>, newTooltip: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
50
+ 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<TValue, TParams, TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
31
51
 
52
+ //#endregion
53
+ //#region src/helpers/withAsync.d.ts
32
54
  /**
33
55
  * withAsync works like withParams, but is specifically designed for async rules that depend on external values.
34
56
  *
@@ -47,9 +69,11 @@ declare function withTooltip<TValue extends any, TParams extends any[], TReturn
47
69
  * ```
48
70
  * Docs: {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withasync}
49
71
  */
50
- 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<TValue, UnwrapRegleUniversalParams<TParams>, true, TMetadata>;
72
+ 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<TValue, UnwrapRegleUniversalParams<TParams>, true, TMetadata>;
51
73
  declare function withAsync<TValue extends any, TParams extends any[], TMetadata extends RegleRuleMetadataDefinition>(rule: RegleRuleWithParamsDefinition<TValue, TParams, true, TMetadata>, depsArray?: [...TParams]): RegleRuleWithParamsDefinition<TValue, TParams, true, TMetadata>;
52
74
 
75
+ //#endregion
76
+ //#region src/helpers/withParams.d.ts
53
77
  /**
54
78
  * The withParams wrapper allows your rule to depend on external parameters, such as a reactive property in your component or store.
55
79
  *
@@ -70,14 +94,18 @@ declare function withAsync<TValue extends any, TParams extends any[], TMetadata
70
94
  * ```
71
95
  * Docs: {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withparams}
72
96
  */
73
- declare function withParams<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<TValue, any[], TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, TAsync, TMetadata>;
74
- declare function withParams<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<TValue, TParams, TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetadata>;
97
+ declare function withParams<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<TValue, any[], TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, TAsync, TMetadata>;
98
+ declare function withParams<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<TValue, TParams, TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetadata>;
75
99
 
100
+ //#endregion
101
+ //#region src/helpers/applyIf.d.ts
76
102
  /**
77
103
  * The applyIf operator is similar to requiredIf, but it can be used with any rule. It simplifies conditional rule declarations.
78
104
  */
79
- declare function applyIf<TValue extends any, 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>(_condition: MaybeRefOrGetter<Maybe<boolean>>, rule: InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>): RegleRuleDefinition<TValue, [...TParams, condition: boolean], TAsync, TMetadata>;
105
+ declare function applyIf<TValue extends any, 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)>(_condition: MaybeRefOrGetter<Maybe<boolean>>, rule: InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>): RegleRuleDefinition<TValue, [...TParams, condition: boolean], TAsync, TMetadata>;
80
106
 
107
+ //#endregion
108
+ //#region src/helpers/ruleHelpers/isFilled.d.ts
81
109
  /**
82
110
  * This is almost a must have for optional fields. It checks if any value you provided is defined (including arrays and objects). You can base your validator result on this.
83
111
  *
@@ -88,21 +116,29 @@ declare function applyIf<TValue extends any, TParams extends any[], TReturn exte
88
116
  */
89
117
  declare function isFilled<T extends unknown>(value: T, considerEmptyArrayInvalid?: boolean): value is NonNullable<T>;
90
118
 
119
+ //#endregion
120
+ //#region src/helpers/ruleHelpers/isNumber.d.ts
91
121
  /**
92
122
  * This is a type guard that will check if the passed value is a real Number. This also returns false for NaN, so this is better than typeof value === "number".
93
123
  */
94
124
  declare function isNumber(value: unknown): value is number;
95
125
 
126
+ //#endregion
127
+ //#region src/helpers/ruleHelpers/matchRegex.d.ts
96
128
  /**
97
129
  * This utility can take multiple regular expressions as arguments. It checks the input's validity and tests it against the provided regex patterns.
98
130
  */
99
131
  declare function matchRegex(_value: string | number | null | undefined, ...expr: RegExp[]): boolean;
100
132
 
133
+ //#endregion
134
+ //#region src/helpers/ruleHelpers/getSize.d.ts
101
135
  /**
102
136
  * This helper will return the length of any data type you pass. It works with strings, arrays, objects and numbers.
103
137
  */
104
138
  declare function getSize(value: MaybeRef<string | any[] | Record<string, any> | number>): number;
105
139
 
140
+ //#endregion
141
+ //#region src/helpers/ruleHelpers/toNumber.d.ts
106
142
  /**
107
143
  * This utility converts any string (or number) into a number using the Number constructor.
108
144
  *
@@ -110,13 +146,27 @@ declare function getSize(value: MaybeRef<string | any[] | Record<string, any> |
110
146
  */
111
147
  declare function toNumber<T extends number | string | undefined>(argument: T): number;
112
148
 
149
+ //#endregion
150
+ //#region ../../node_modules/.pnpm/type-fest@4.40.1/node_modules/type-fest/source/observable-like.d.ts
113
151
  declare global {
114
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
115
- interface SymbolConstructor {
116
- readonly observable: symbol;
117
- }
152
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
153
+ interface SymbolConstructor {
154
+ readonly observable: symbol;
155
+ }
118
156
  }
119
157
 
158
+ //#endregion
159
+ //#region ../../node_modules/.pnpm/type-fest@4.40.1/node_modules/type-fest/source/empty-object.d.ts
160
+ /**
161
+ @remarks
162
+ The TC39 observable proposal defines a `closed` property, but some implementations (such as xstream) do not as of 10/08/2021.
163
+ As well, some guidance on making an `Observable` to not include `closed` property.
164
+ @see https://github.com/tc39/proposal-observable/blob/master/src/Observable.js#L129-L130
165
+ @see https://github.com/staltz/xstream/blob/6c22580c1d84d69773ee4b0905df44ad464955b3/src/index.ts#L79-L85
166
+ @see https://github.com/benlesh/symbol-observable#making-an-object-observable
167
+
168
+ @category Observable
169
+ */
120
170
  declare const emptyObjectSymbol: unique symbol;
121
171
 
122
172
  /**
@@ -145,8 +195,27 @@ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<n
145
195
 
146
196
  @category Object
147
197
  */
148
- type EmptyObject = {[emptyObjectSymbol]?: never};
198
+ type EmptyObject = {
199
+ [emptyObjectSymbol]?: never;
200
+ };
201
+
202
+ //#endregion
203
+ //#region ../shared/utils/isEmpty.d.ts
204
+ /**
205
+ Returns a `boolean` for whether the type is strictly equal to an empty plain object, the `{}` value.
206
+
207
+ @example
208
+ ```
209
+ import type {IsEmptyObject} from 'type-fest';
149
210
 
211
+ type Pass = IsEmptyObject<{}>; //=> true
212
+ type Fail = IsEmptyObject<[]>; //=> false
213
+ type Fail = IsEmptyObject<null>; //=> false
214
+ ```
215
+
216
+ @see EmptyObject
217
+ @category Object
218
+ */
150
219
  /**
151
220
  * This is the inverse of isFilled. It will check if the value is in any way empty (including arrays and objects)
152
221
  *
@@ -157,24 +226,30 @@ type EmptyObject = {[emptyObjectSymbol]?: never};
157
226
  */
158
227
  declare function isEmpty(value: unknown, considerEmptyArrayInvalid?: boolean): value is null | undefined | [] | EmptyObject;
159
228
 
229
+ //#endregion
230
+ //#region ../shared/utils/isDate.d.ts
160
231
  /**
161
232
  * This is a useful helper that can check if the provided value is a Date, it is used internally for date rules. This can also check strings.
162
233
  */
163
234
  declare function isDate(value: unknown): value is Date;
164
235
 
236
+ //#endregion
237
+ //#region ../shared/utils/toDate.d.ts
165
238
  /**
166
239
  * This utility will coerce any string, number or Date value into a Date using the Date constructor.
167
240
  */
168
241
  declare function toDate(argument: Maybe<Date | number | string>): Date;
169
242
 
243
+ //#endregion
244
+ //#region src/types/utils/params.utils.d.ts
170
245
  type ExtractValueFromRules<T extends any[]> = T extends [infer F, ...infer R] ? F extends RegleRuleDefinition<infer V, any, any, any> ? [V, ...ExtractValueFromRules<R>] : F extends InlineRuleDeclaration<infer V, any> ? [V, ...ExtractValueFromRules<R>] : [F, ...ExtractValueFromRules<R>] : [];
171
246
  type ExtractAsyncStatesFromRules<T extends any[]> = T extends [infer F, ...infer R] ? F extends RegleRuleDefinition<any, any, infer A, any> ? [A, ...ExtractValueFromRules<R>] : F extends InlineRuleDeclaration<any, any> ? [ReturnType<F> extends Promise<any> ? true : false, ...ExtractValueFromRules<R>] : [F, ...ExtractValueFromRules<R>] : [];
172
247
  type ExtractAsync<T extends [...any[]]> = T extends [infer F, ...infer R] ? F extends true ? true : F extends false ? ExtractAsync<R> : false : false;
173
248
  type GuessAsyncFromRules<T extends any[]> = ExtractAsync<ExtractAsyncStatesFromRules<T>>;
174
249
  type ExtractParamsFromRules<T extends any[]> = T extends [infer F, ...infer R] ? F extends RegleRuleDefinition<any, infer P, any, any> ? [P, ...ExtractParamsFromRules<R>] : [F, ...ExtractParamsFromRules<R>] : [];
175
250
  type MetadataBase = {
176
- $valid: boolean;
177
- [x: string]: any;
251
+ $valid: boolean;
252
+ [x: string]: any;
178
253
  };
179
254
  type ExtractMetaDataFromRules<T extends any[]> = T extends [infer F, ...infer R] ? F extends RegleRuleDefinition<any, any, any, infer M extends MetadataBase> ? [M, ...ExtractMetaDataFromRules<R>] : F extends InlineRuleDeclaration<any, any[], infer M extends MetadataBase | Promise<MetadataBase>> ? [M, ...ExtractMetaDataFromRules<R>] : [...ExtractMetaDataFromRules<R>] : [];
180
255
  type ExtractMetadata<T extends [...any[]]> = T extends [infer F, ...infer R] ? F & ExtractMetadata<R> : {};
@@ -182,51 +257,57 @@ type GuessMetadataFromRules<T extends any[], TMeta = ExtractMetadata<ExtractMeta
182
257
  type FilterTuple<T extends any[]> = T extends [infer F, ...infer R] ? [F] extends [[]] ? [...FilterTuple<R>] : [F, ...FilterTuple<R>] : [];
183
258
  type UnwrapTuples<T extends any[]> = FilterTuple<T> extends [infer U extends any[]] ? U : FilterTuple<T>;
184
259
 
260
+ //#endregion
261
+ //#region src/helpers/and.d.ts
185
262
  /**
186
263
  * The and operator combines multiple rules and validates successfully only if all provided rules are valid.
187
264
  */
188
265
  declare function and<const TRules extends [FormRuleDeclaration<any, any>, ...FormRuleDeclaration<any, any>[]]>(...rules: [...TRules]): RegleRuleDefinition<ExtractValueFromRules<TRules>[number], UnwrapTuples<ExtractParamsFromRules<TRules>>, GuessAsyncFromRules<TRules>, GuessMetadataFromRules<TRules>>;
189
266
 
267
+ //#endregion
268
+ //#region src/helpers/or.d.ts
190
269
  /**
191
270
  * The or operator validates successfully if at least one of the provided rules is valid.
192
271
  */
193
272
  declare function or<TRules extends [FormRuleDeclaration<any, any>, ...FormRuleDeclaration<any, any>[]]>(...rules: [...TRules]): RegleRuleDefinition<ExtractValueFromRules<TRules>[number], UnwrapTuples<ExtractParamsFromRules<TRules>>, GuessAsyncFromRules<TRules>, GuessMetadataFromRules<TRules>>;
194
273
 
274
+ //#endregion
275
+ //#region src/helpers/not.d.ts
195
276
  /**
196
277
  * The not operator passes when the provided rule fails and fails when the rule passes. It can be combined with other rules.
197
278
  */
198
- declare function not<TValue, 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<TValue, TParams, TAsync, TMetadata> | InlineRuleDeclaration<TValue, TParams, TReturn>, message?: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
279
+ declare function not<TValue, 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<TValue, TParams, TAsync, TMetadata> | InlineRuleDeclaration<TValue, TParams, TReturn>, message?: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TValue, TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
199
280
 
281
+ //#endregion
282
+ //#region src/rules/alpha.d.ts
200
283
  /**
201
284
  * Allows only alphabetic characters.
202
285
  *
203
286
  * @param [options] - Alpha rules options
204
287
  * */
205
- declare const alpha: RegleRuleWithParamsDefinition<string, [
206
- options?: CommonAlphaOptions | undefined
207
- ], false, boolean, MaybeInput<string>, string>;
288
+ declare const alpha: RegleRuleWithParamsDefinition<string, [options?: CommonAlphaOptions | undefined], false, boolean, MaybeInput<string>, string>;
208
289
 
290
+ //#endregion
291
+ //#region src/rules/alphaNum.d.ts
209
292
  /**
210
293
  * Allows only alphanumeric characters.
211
294
  *
212
295
  * @param [options] - Alpha rules options
213
296
  */
214
- declare const alphaNum: RegleRuleWithParamsDefinition<string | number, [
215
- options?: CommonAlphaOptions | undefined
216
- ], false, boolean, MaybeInput<string>>;
297
+ declare const alphaNum: RegleRuleWithParamsDefinition<string | number, [options?: CommonAlphaOptions | undefined], false, boolean, MaybeInput<string>>;
217
298
 
299
+ //#endregion
300
+ //#region src/rules/between.d.ts
218
301
  /**
219
302
  * Checks if a number is in specified bounds. min and max are both inclusive.
220
303
  *
221
304
  * @param min - the minimum limit
222
305
  * @param max - the maximum limit
223
306
  */
224
- declare const between: RegleRuleWithParamsDefinition<number, [
225
- min: number,
226
- max: number,
227
- options?: CommonComparisonOptions
228
- ], false, boolean, MaybeInput<number>>;
307
+ declare const between: RegleRuleWithParamsDefinition<number, [min: number, max: number, options?: CommonComparisonOptions], false, boolean, MaybeInput<number>>;
229
308
 
309
+ //#endregion
310
+ //#region src/rules/boolean.d.ts
230
311
  /**
231
312
  * Requires a value to be a native boolean type
232
313
  *
@@ -234,20 +315,24 @@ declare const between: RegleRuleWithParamsDefinition<number, [
234
315
  */
235
316
  declare const boolean: RegleRuleDefinition<unknown, [], false, boolean, MaybeInput<boolean>, unknown>;
236
317
 
318
+ //#endregion
319
+ //#region src/rules/checked.d.ts
237
320
  /**
238
321
  * Requires a boolean value to be true. This is useful for checkbox inputs.
239
322
  */
240
323
  declare const checked: RegleRuleDefinition<boolean, [], false, boolean, MaybeInput<boolean>>;
241
324
 
325
+ //#endregion
326
+ //#region src/rules/contains.d.ts
242
327
  /**
243
328
  * Checks if the string contains the specified substring.
244
329
  *
245
330
  * @param part - the part the value needs to contain
246
331
  */
247
- declare const contains: RegleRuleWithParamsDefinition<string, [
248
- part: MaybeInput<string>
249
- ], false, boolean, MaybeInput<string>>;
332
+ declare const contains: RegleRuleWithParamsDefinition<string, [part: MaybeInput<string>], false, boolean, MaybeInput<string>>;
250
333
 
334
+ //#endregion
335
+ //#region src/rules/date.d.ts
251
336
  /**
252
337
  * Requires a value to be a native Date constructor
253
338
  *
@@ -255,40 +340,40 @@ declare const contains: RegleRuleWithParamsDefinition<string, [
255
340
  */
256
341
  declare const date: RegleRuleDefinition<unknown, [], false, boolean, MaybeInput<Date>, unknown>;
257
342
 
343
+ //#endregion
344
+ //#region src/rules/dateAfter.d.ts
258
345
  /**
259
346
  * Checks if the date is after the given parameter.
260
347
  *
261
348
  * @param after - the date to compare to
262
349
  * @param options - comparison options
263
350
  */
264
- declare const dateAfter: RegleRuleWithParamsDefinition<string | Date, [
265
- after: MaybeInput<string | Date>,
266
- options?: CommonComparisonOptions
267
- ], false, true | {
268
- $valid: false;
269
- error: 'date-not-after';
351
+ declare const dateAfter: RegleRuleWithParamsDefinition<string | Date, [after: MaybeInput<string | Date>, options?: CommonComparisonOptions], false, true | {
352
+ $valid: false;
353
+ error: 'date-not-after';
270
354
  } | {
271
- $valid: false;
272
- error: 'value-or-parameter-not-a-date';
355
+ $valid: false;
356
+ error: 'value-or-parameter-not-a-date';
273
357
  }, MaybeInput<string | Date>>;
274
358
 
359
+ //#endregion
360
+ //#region src/rules/dateBefore.d.ts
275
361
  /**
276
362
  * Checks if the date is before the given parameter.
277
363
  *
278
364
  * @param before - the date to compare to
279
365
  * @param options - comparison options
280
366
  */
281
- declare const dateBefore: RegleRuleWithParamsDefinition<string | Date, [
282
- before: MaybeInput<string | Date>,
283
- options?: CommonComparisonOptions
284
- ], false, true | {
285
- $valid: false;
286
- error: 'date-not-before';
367
+ declare const dateBefore: RegleRuleWithParamsDefinition<string | Date, [before: MaybeInput<string | Date>, options?: CommonComparisonOptions], false, true | {
368
+ $valid: false;
369
+ error: 'date-not-before';
287
370
  } | {
288
- $valid: false;
289
- error: 'value-or-parameter-not-a-date';
371
+ $valid: false;
372
+ error: 'value-or-parameter-not-a-date';
290
373
  }, MaybeInput<string | Date>>;
291
374
 
375
+ //#endregion
376
+ //#region src/rules/dateBetween.d.ts
292
377
  /**
293
378
  * Checks if the date falls between the specified bounds.
294
379
  *
@@ -296,130 +381,137 @@ declare const dateBefore: RegleRuleWithParamsDefinition<string | Date, [
296
381
  * @param after - the maximum limit
297
382
  * @param options - comparison options
298
383
  */
299
- declare const dateBetween: RegleRuleWithParamsDefinition<string | Date, [
300
- before: MaybeInput<string | Date>,
301
- after: MaybeInput<string | Date>,
302
- options?: CommonComparisonOptions
303
- ], false, boolean, MaybeInput<string | Date>>;
384
+ declare const dateBetween: RegleRuleWithParamsDefinition<string | Date, [before: MaybeInput<string | Date>, after: MaybeInput<string | Date>, options?: CommonComparisonOptions], false, boolean, MaybeInput<string | Date>>;
304
385
 
386
+ //#endregion
387
+ //#region src/rules/decimal.d.ts
305
388
  /**
306
389
  * Allows positive and negative decimal numbers.
307
390
  */
308
- declare const decimal: RegleRuleDefinition<string | number, [
309
- ], false, boolean, MaybeInput<number | undefined>>;
391
+ declare const decimal: RegleRuleDefinition<string | number, [], false, boolean, MaybeInput<number | undefined>>;
310
392
 
393
+ //#endregion
394
+ //#region src/rules/email.d.ts
311
395
  /**
312
396
  * Validates email addresses. Always verify on the server to ensure the address is real and not already in use.
313
397
  */
314
398
  declare const email: RegleRuleDefinition<string, [], false, boolean, MaybeInput<string>>;
315
399
 
400
+ //#endregion
401
+ //#region src/rules/endsWith.d.ts
316
402
  /**
317
403
  * Checks if the string ends with the specified substring.
318
404
  *
319
405
  * @param part - the value the field must end with
320
406
  */
321
- declare const endsWith: RegleRuleWithParamsDefinition<string, [
322
- part: MaybeInput<string>
323
- ], false, boolean, MaybeInput<string>>;
407
+ declare const endsWith: RegleRuleWithParamsDefinition<string, [part: MaybeInput<string>], false, boolean, MaybeInput<string>>;
324
408
 
409
+ //#endregion
410
+ //#region src/rules/exactLength.d.ts
325
411
  /**
326
412
  * Requires the input value to have a strict specified length, inclusive. Works with arrays, objects and strings.
327
413
  *
328
414
  * @param count - the required length
329
415
  */
330
- declare const exactLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
331
- count: number
332
- ], false, boolean>;
416
+ declare const exactLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [count: number], false, boolean>;
333
417
 
418
+ //#endregion
419
+ //#region src/rules/exactValue.d.ts
334
420
  /**
335
421
  * Requires a field to have a strict numeric value.
336
422
  */
337
- declare const exactValue: RegleRuleWithParamsDefinition<number, [
338
- count: number
339
- ], false, boolean, MaybeInput<number>>;
423
+ declare const exactValue: RegleRuleWithParamsDefinition<number, [count: number], false, boolean, MaybeInput<number>>;
340
424
 
425
+ //#endregion
426
+ //#region src/rules/hexadecimal.d.ts
341
427
  /**
342
428
  * Allows only hexadecimal values.
343
429
  */
344
430
  declare const hexadecimal: RegleRuleDefinition<string, [], false, boolean, MaybeInput<string>>;
345
431
 
432
+ //#endregion
433
+ //#region src/rules/integer.d.ts
346
434
  /**
347
435
  * Allows only integers (positive and negative).
348
436
  */
349
437
  declare const integer: RegleRuleDefinition<string | number, [], false, boolean, MaybeInput<number>>;
350
438
 
439
+ //#endregion
440
+ //#region src/rules/ipv4Address.d.ts
351
441
  /**
352
442
  * Validates IPv4 addresses in dotted decimal notation 127.0.0.1.
353
443
  */
354
444
  declare const ipv4Address: RegleRuleDefinition<string, [], false, boolean, MaybeInput<string>>;
355
445
 
446
+ //#endregion
447
+ //#region src/rules/literal.d.ts
356
448
  /**
357
449
  * Allow only one possible literal value
358
450
  */
359
451
  declare function literal<const TValue extends string | number>(literal: MaybeRefOrGetter<TValue>): RegleRuleDefinition<TValue, [literal: TValue], false, boolean, MaybeInput<TValue>, string | number>;
360
452
 
453
+ //#endregion
454
+ //#region src/rules/macAddress.d.ts
361
455
  /**
362
456
  * Validates MAC addresses. Call as a function to specify a custom separator (e.g., ':' or an empty string for 00ff1122334455).
363
457
  *
364
458
  * @param separator - the custom separator
365
459
  */
366
- declare const macAddress: RegleRuleWithParamsDefinition<string, [
367
- separator?: string | undefined
368
- ], false, boolean, MaybeInput<string>>;
460
+ declare const macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false, boolean, MaybeInput<string>>;
369
461
 
462
+ //#endregion
463
+ //#region src/rules/maxLength.d.ts
370
464
  /**
371
465
  * Requires the input value to have a maximum specified length, inclusive. Works with arrays, objects and strings.
372
466
  *
373
467
  * @param max - the maximum length
374
468
  * @param options - comparison options
375
469
  */
376
- declare const maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
377
- count: number,
378
- options?: CommonComparisonOptions
379
- ], false, boolean>;
470
+ declare const maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [count: number, options?: CommonComparisonOptions], false, boolean>;
380
471
 
472
+ //#endregion
473
+ //#region src/rules/maxValue.d.ts
381
474
  /**
382
475
  * Requires a field to have a specified maximum numeric value.
383
476
  *
384
477
  * @param max - the maximum value
385
478
  * @param options - comparison options
386
479
  */
387
- declare const maxValue: RegleRuleWithParamsDefinition<number, [
388
- count: number,
389
- options?: CommonComparisonOptions
390
- ], false, boolean, MaybeInput<number>>;
480
+ declare const maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparisonOptions], false, boolean, MaybeInput<number>>;
391
481
 
482
+ //#endregion
483
+ //#region src/rules/minLength.d.ts
392
484
  /**
393
485
  * Requires the input value to have a minimum specified length, inclusive. Works with arrays, objects and strings.
394
486
  *
395
487
  * @param min - the minimum value
396
488
  * @param options - comparison options
397
489
  */
398
- declare const minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
399
- count: number,
400
- options?: CommonComparisonOptions
401
- ], false, boolean>;
490
+ declare const minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [count: number, options?: CommonComparisonOptions], false, boolean>;
402
491
 
492
+ //#endregion
493
+ //#region src/rules/minValue.d.ts
403
494
  /**
404
495
  * Requires a field to have a specified minimum numeric value.
405
496
  *
406
497
  * @param count - the minimum count
407
498
  * @param options - comparison options
408
499
  */
409
- declare const minValue: RegleRuleWithParamsDefinition<number, [
410
- count: number,
411
- options?: CommonComparisonOptions
412
- ], false, boolean, MaybeInput<number>>;
500
+ declare const minValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparisonOptions], false, boolean, MaybeInput<number>>;
413
501
 
502
+ //#endregion
503
+ //#region src/rules/nativeEnum.d.ts
414
504
  type EnumLike = {
415
- [k: string]: string | number;
416
- [nu: number]: string;
505
+ [k: string]: string | number;
506
+ [nu: number]: string;
417
507
  };
418
508
  /**
419
509
  * Validate against a native Typescript enum value.
420
510
  */
421
511
  declare function nativeEnum<T extends EnumLike>(enumLike: T): RegleRuleDefinition<MaybeInput<T[keyof T]>, [enumLike: T], false, boolean, MaybeInput<T[keyof T]>, string | number>;
422
512
 
513
+ //#endregion
514
+ //#region src/rules/number.d.ts
423
515
  /**
424
516
  * Requires a value to be a native number type
425
517
  *
@@ -427,31 +519,36 @@ declare function nativeEnum<T extends EnumLike>(enumLike: T): RegleRuleDefinitio
427
519
  */
428
520
  declare const number: RegleRuleDefinition<unknown, [], false, boolean, MaybeInput<number>, unknown>;
429
521
 
522
+ //#endregion
523
+ //#region src/rules/numeric.d.ts
430
524
  /**
431
525
  * Allows only numeric values (including numeric strings).
432
526
  */
433
- declare const numeric: RegleRuleDefinition<string | number, [
434
- ], false, boolean, MaybeInput<string | number>>;
527
+ declare const numeric: RegleRuleDefinition<string | number, [], false, boolean, MaybeInput<string | number>>;
435
528
 
529
+ //#endregion
530
+ //#region src/rules/oneOf.d.ts
436
531
  /**
437
532
  * Allow only one of the values from a fixed Array of possible entries.
438
533
  */
439
- declare function oneOf<const TValues extends readonly [string | number, ...(string | number)[]]>(options: MaybeReadonly<MaybeRefOrGetter<[...TValues]>>): RegleRuleDefinition<TValues[number], [
440
- options: TValues
441
- ], false, boolean, MaybeInput<TValues[number]>, string | number>;
534
+ declare function oneOf<const TValues extends readonly [string | number, ...(string | number)[]]>(options: MaybeReadonly<MaybeRefOrGetter<[...TValues]>>): RegleRuleDefinition<TValues[number], [options: TValues], false, boolean, MaybeInput<TValues[number]>, string | number>;
442
535
 
536
+ //#endregion
537
+ //#region src/rules/regex.d.ts
443
538
  /**
444
539
  * Checks if the value matches one or more regular expressions.
445
540
  */
446
- declare const regex: RegleRuleWithParamsDefinition<string | number, [
447
- regexp: RegExp | RegExp[]
448
- ], false, boolean, MaybeInput<string | number>>;
541
+ declare const regex: RegleRuleWithParamsDefinition<string | number, [regexp: RegExp | RegExp[]], false, boolean, MaybeInput<string | number>>;
449
542
 
543
+ //#endregion
544
+ //#region src/rules/required.d.ts
450
545
  /**
451
546
  * Requires non-empty data. Checks for empty arrays and strings containing only whitespaces.
452
547
  */
453
548
  declare const required: RegleRuleDefinition<unknown, [], false, boolean, unknown>;
454
549
 
550
+ //#endregion
551
+ //#region src/rules/requiredIf.d.ts
455
552
  /**
456
553
  * Requires non-empty data, only if provided data property, ref, or a function resolves to true.
457
554
  *
@@ -459,6 +556,8 @@ declare const required: RegleRuleDefinition<unknown, [], false, boolean, unknown
459
556
  */
460
557
  declare const requiredIf: RegleRuleWithParamsDefinition<unknown, [condition: boolean], false, boolean>;
461
558
 
559
+ //#endregion
560
+ //#region src/rules/requiredUnless.d.ts
462
561
  /**
463
562
  * Requires non-empty data, only if provided data property, ref, or a function resolves to false.
464
563
  *
@@ -466,23 +565,24 @@ declare const requiredIf: RegleRuleWithParamsDefinition<unknown, [condition: boo
466
565
  */
467
566
  declare const requiredUnless: RegleRuleWithParamsDefinition<unknown, [condition: boolean], false, boolean>;
468
567
 
568
+ //#endregion
569
+ //#region src/rules/sameAs.d.ts
469
570
  /**
470
571
  * Checks if the value matches the specified property or ref.
471
572
  */
472
- declare const sameAs: <const TTarget extends unknown>(target: MaybeRefOrGetter<TTarget>, otherName?: MaybeRefOrGetter<string>) => RegleRuleDefinition<unknown, [
473
- target: TTarget,
474
- otherName?: string
475
- ], false, boolean, TTarget extends MaybeInput<infer M> ? M : MaybeInput<TTarget>>;
573
+ declare const sameAs: <const TTarget extends unknown>(target: MaybeRefOrGetter<TTarget>, otherName?: MaybeRefOrGetter<string>) => RegleRuleDefinition<unknown, [target: TTarget, otherName?: string], false, boolean, TTarget extends MaybeInput<infer M> ? M : MaybeInput<TTarget>>;
476
574
 
575
+ //#endregion
576
+ //#region src/rules/startsWith.d.ts
477
577
  /**
478
578
  * Checks if the string starts with the specified substring.
479
579
  *
480
580
  * @private part - the value the field must start with
481
581
  */
482
- declare const startsWith: RegleRuleWithParamsDefinition<string, [
483
- part: MaybeInput<string>
484
- ], false, boolean, MaybeInput<string>>;
582
+ declare const startsWith: RegleRuleWithParamsDefinition<string, [part: MaybeInput<string>], false, boolean, MaybeInput<string>>;
485
583
 
584
+ //#endregion
585
+ //#region src/rules/string.d.ts
486
586
  /**
487
587
  * Requires a value to be a native string type
488
588
  *
@@ -490,6 +590,8 @@ declare const startsWith: RegleRuleWithParamsDefinition<string, [
490
590
  */
491
591
  declare const string: RegleRuleDefinition<unknown, [], false, boolean, MaybeInput<string>, unknown>;
492
592
 
593
+ //#endregion
594
+ //#region src/rules/type.d.ts
493
595
  /**
494
596
  * Define the input type of a rule. No runtime validation.
495
597
  *
@@ -497,9 +599,12 @@ declare const string: RegleRuleDefinition<unknown, [], false, boolean, MaybeInpu
497
599
  */
498
600
  declare function type<T>(): RegleRuleDefinition<unknown, [], false, boolean, MaybeInput<T>>;
499
601
 
602
+ //#endregion
603
+ //#region src/rules/url.d.ts
500
604
  /**
501
605
  * Validates URLs.
502
606
  */
503
607
  declare const url: RegleRuleDefinition<string, [], false, boolean, MaybeInput<string>>;
504
608
 
505
- export { type EnumLike, alpha, alphaNum, and, applyIf, between, boolean, checked, contains, date, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, exactValue, getSize, hexadecimal, integer, ipv4Address, isDate, isEmpty, isFilled, isNumber, literal, macAddress, matchRegex, maxLength, maxValue, minLength, minValue, nativeEnum, not, number, numeric, oneOf, or, regex, required, requiredIf, requiredUnless, sameAs, startsWith, string, toDate, toNumber, type, url, withAsync, withMessage, withParams, withTooltip };
609
+ //#endregion
610
+ export { EnumLike, alpha, alphaNum, and, applyIf, between, boolean, checked, contains, date, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, exactValue, getSize, hexadecimal, integer, ipv4Address, isDate, isEmpty, isFilled, isNumber, literal, macAddress, matchRegex, maxLength, maxValue, minLength, minValue, nativeEnum, not, number, numeric, oneOf, or, regex, required, requiredIf, requiredUnless, sameAs, startsWith, string, toDate, toNumber, type, url, withAsync, withMessage, withParams, withTooltip };