@regle/core 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +133 -64
- package/dist/index.d.cts +182 -79
- package/dist/index.d.ts +182 -79
- package/dist/index.js +144 -77
- package/package.json +21 -19
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
2
|
import { MaybeRef, Ref, ComputedRef } from 'vue';
|
|
3
3
|
import { DeepMaybeRef as DeepMaybeRef$1 } from 'types/utils';
|
|
4
|
+
import { DeepReactiveState as DeepReactiveState$1 } from 'types/core/useRegle.types';
|
|
4
5
|
|
|
5
6
|
type ArrayElement<T> = T extends Array<infer U> ? U : never;
|
|
6
7
|
type ExcludeFromTuple<T extends readonly any[], E> = T extends [infer F, ...infer R] ? [NonNullable<F>] extends [E] ? ExcludeFromTuple<R, E> : [Exclude<F, E>, ...ExcludeFromTuple<R, E>] : [];
|
|
@@ -11,40 +12,11 @@ type MaybeNull<T> = T | null;
|
|
|
11
12
|
type DeepMaybeRef<T extends Record<string, any>> = {
|
|
12
13
|
[K in keyof T]: MaybeRef<T[K]>;
|
|
13
14
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* @argument
|
|
17
|
-
* createRule arguments options
|
|
18
|
-
*/
|
|
19
|
-
interface RegleRuleInit<TValue extends any, TParams extends any[] = [], TType extends string = string> {
|
|
20
|
-
validator: (value: Maybe<TValue>, ...args: TParams) => boolean | Promise<boolean>;
|
|
21
|
-
message: string | ((value: Maybe<TValue>, ...args: TParams) => string);
|
|
22
|
-
active?: boolean | ((value: Maybe<TValue>, ...args: TParams) => boolean);
|
|
23
|
-
type: TType;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
type DefaultValidators = {
|
|
27
|
-
maxLength: RegleRuleWithParamsDefinition<string, [count: number]>;
|
|
28
|
-
required: RegleRuleDefinition<unknown, []>;
|
|
29
|
-
requiredIf: RegleRuleWithParamsDefinition<unknown, [condition: boolean]>;
|
|
30
|
-
alpha: RegleRuleDefinition<string>;
|
|
31
|
-
alphaNum: RegleRuleDefinition<string | number>;
|
|
32
|
-
between: RegleRuleWithParamsDefinition<number, [min: number, max: number]>;
|
|
33
|
-
decimal: RegleRuleDefinition<number | string>;
|
|
34
|
-
email: RegleRuleDefinition<string>;
|
|
35
|
-
integer: RegleRuleDefinition<number | string>;
|
|
36
|
-
maxValue: RegleRuleWithParamsDefinition<number, [count: number]>;
|
|
37
|
-
minLength: RegleRuleWithParamsDefinition<string | Record<PropertyKey, any> | any[], [
|
|
38
|
-
count: number
|
|
39
|
-
]>;
|
|
40
|
-
minValue: RegleRuleWithParamsDefinition<number, [count: number]>;
|
|
41
|
-
numeric: RegleRuleDefinition<number | string>;
|
|
42
|
-
requireUnless: RegleRuleWithParamsDefinition<unknown, [condition: boolean]>;
|
|
43
|
-
sameAs: RegleRuleWithParamsDefinition<unknown, [target: unknown]>;
|
|
44
|
-
url: RegleRuleDefinition<string>;
|
|
15
|
+
type ExcludeByType<T, U> = {
|
|
16
|
+
[K in keyof T as T[K] extends U ? never : K]: T[K] extends U ? never : T[K];
|
|
45
17
|
};
|
|
46
18
|
|
|
47
|
-
type ParamDecl<T = any> = MaybeRef<T
|
|
19
|
+
type ParamDecl<T = any> = MaybeRef<Maybe<T>> | (() => Maybe<T>);
|
|
48
20
|
type CreateFn<T extends any[]> = (...args: T) => any;
|
|
49
21
|
/**
|
|
50
22
|
* Transform normal parameters tuple declaration to a rich tuple declaration
|
|
@@ -64,14 +36,14 @@ type UnwrapRegleUniversalParams<T extends ParamDecl[] = [], F = CreateFn<T>> = [
|
|
|
64
36
|
/**
|
|
65
37
|
* Internal definition of the rule, can be used to reset or patch the rule
|
|
66
38
|
*/
|
|
67
|
-
interface RegleInternalRuleDefs<TValue extends any = any, TParams extends any[] = []> {
|
|
68
|
-
_validator: (value: Maybe<TValue>, ...args: TParams) =>
|
|
69
|
-
_message: string | ((value: Maybe<TValue>,
|
|
70
|
-
_active?: boolean | ((value: Maybe<TValue>,
|
|
71
|
-
_type
|
|
39
|
+
interface RegleInternalRuleDefs<TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetadata extends RegleRuleMetadataDefinition = boolean> {
|
|
40
|
+
_validator: (value: Maybe<TValue>, ...args: TParams) => TAsync extends false ? TMetadata : Promise<TMetadata>;
|
|
41
|
+
_message: string | string[] | ((value: Maybe<TValue>, metadata: RegleRuleMetadataConsumer<TParams, TMetadata>) => string | string[]);
|
|
42
|
+
_active?: boolean | ((value: Maybe<TValue>, metadata: RegleRuleMetadataConsumer<TParams, TMetadata>) => boolean);
|
|
43
|
+
_type?: string;
|
|
72
44
|
_patched: boolean;
|
|
73
45
|
_params?: RegleUniversalParams<TParams>;
|
|
74
|
-
_async:
|
|
46
|
+
_async: TAsync;
|
|
75
47
|
}
|
|
76
48
|
declare enum InternalRuleType {
|
|
77
49
|
Inline = "__inline",
|
|
@@ -81,39 +53,130 @@ declare enum InternalRuleType {
|
|
|
81
53
|
/**
|
|
82
54
|
* Returned typed of rules created with `createRule`
|
|
83
55
|
* */
|
|
84
|
-
interface RegleRuleDefinition<TValue extends any = any, TParams extends any[] = []> extends RegleInternalRuleDefs<TValue, TParams> {
|
|
85
|
-
validator: RegleRuleDefinitionProcessor<TValue, TParams,
|
|
86
|
-
message:
|
|
87
|
-
active:
|
|
88
|
-
type
|
|
56
|
+
interface RegleRuleDefinition<TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetaData extends RegleRuleMetadataDefinition = boolean> extends RegleInternalRuleDefs<TValue, TParams, TAsync, TMetaData> {
|
|
57
|
+
validator: RegleRuleDefinitionProcessor<TValue, TParams, TAsync extends false ? TMetaData : Promise<TMetaData>>;
|
|
58
|
+
message: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetaData>, string | string[]>;
|
|
59
|
+
active: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetaData>, boolean>;
|
|
60
|
+
type?: string;
|
|
61
|
+
exec: (value: Maybe<TValue>) => TAsync extends false ? TMetaData : Promise<TMetaData>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* @internal
|
|
65
|
+
* */
|
|
66
|
+
interface $InternalRegleRuleDefinition extends RegleInternalRuleDefs<any, any, any> {
|
|
67
|
+
validator: RegleRuleDefinitionProcessor;
|
|
68
|
+
message: RegleRuleDefinitionWithMetadataProcessor<any, any, any>;
|
|
69
|
+
active: RegleRuleDefinitionWithMetadataProcessor<any, any, any>;
|
|
70
|
+
type?: string;
|
|
71
|
+
exec: (value: any) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
|
|
89
72
|
}
|
|
90
73
|
/**
|
|
91
74
|
* Rules with params created with `createRules` are callable while being customizable
|
|
92
75
|
*/
|
|
93
|
-
interface RegleRuleWithParamsDefinition<TValue extends any = any, TParams extends any[] = []> extends
|
|
94
|
-
(...params: RegleUniversalParams<TParams>): RegleRuleDefinition<TValue, TParams>;
|
|
76
|
+
interface RegleRuleWithParamsDefinition<TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetadata extends RegleRuleMetadataDefinition = boolean> extends RegleRuleCore<TValue, TParams, TAsync, TMetadata>, RegleInternalRuleDefs<TValue, TParams, TAsync, TMetadata> {
|
|
77
|
+
(...params: RegleUniversalParams<TParams>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
|
|
95
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Define a rule Metadata definition
|
|
81
|
+
*/
|
|
82
|
+
type RegleRuleMetadataDefinition = {
|
|
83
|
+
$valid: boolean;
|
|
84
|
+
[x: string]: any;
|
|
85
|
+
} | boolean;
|
|
86
|
+
type DefaultMetadataProperties = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid'>;
|
|
87
|
+
/**
|
|
88
|
+
* Will be used to consumme metadata on related helpers and rule status
|
|
89
|
+
*/
|
|
90
|
+
type RegleRuleMetadataConsumer<TParams extends any[] = [], TMetadata extends RegleRuleMetadataDefinition = boolean> = DefaultMetadataProperties & (TParams extends never ? {} : {
|
|
91
|
+
$params: TParams;
|
|
92
|
+
}) & (TMetadata extends boolean ? {} : Omit<TMetadata, '$valid'>);
|
|
93
|
+
/**
|
|
94
|
+
* @internal
|
|
95
|
+
*/
|
|
96
|
+
type $InternalRegleRuleMetadataConsumer = DefaultMetadataProperties & {
|
|
97
|
+
$params?: any[];
|
|
98
|
+
[x: string]: any;
|
|
99
|
+
};
|
|
96
100
|
/**
|
|
97
101
|
* Generic types for a created RegleRule
|
|
98
102
|
*/
|
|
99
|
-
type RegleRuleRaw<TValue extends any = any, TParams extends any[] = []> = RegleRuleDefinition<TValue, TParams> | RegleRuleWithParamsDefinition<TValue, TParams>;
|
|
103
|
+
type RegleRuleRaw<TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetaData extends RegleRuleMetadataDefinition = boolean> = RegleRuleDefinition<TValue, TParams, TAsync, TMetaData> | RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetaData>;
|
|
100
104
|
/**
|
|
101
105
|
* Process the type of a created rule with `createRule`.
|
|
102
106
|
* For a rule with params it will return a function
|
|
103
107
|
* Otherwise it will return the rule definition
|
|
104
108
|
*/
|
|
105
|
-
type InferRegleRule<TValue extends any = any, TParams extends any[] = []> = [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
type RegleRuleDefinitionProcessor<TValue extends any = any, TParams extends any[] = [], TReturn = any> = (value: Maybe<TValue>, ...args: TParams) => TReturn;
|
|
109
|
+
type InferRegleRule<TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetaData extends RegleRuleMetadataDefinition = boolean> = [TParams] extends [[]] ? RegleRuleDefinition<TValue, TParams, TAsync, TMetaData> : RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetaData>;
|
|
110
|
+
type RegleRuleDefinitionProcessor<TValue extends any = any, TParams extends any[] = [], TReturn = any> = (value: Maybe<TValue>, ...params: TParams) => TReturn;
|
|
111
|
+
type RegleRuleDefinitionWithMetadataProcessor<TValue extends any, TMetadata extends RegleRuleMetadataConsumer<any, any>, TReturn = any> = ((value: Maybe<TValue>, metadata: TMetadata) => TReturn) | TReturn;
|
|
109
112
|
type RegleCollectionRuleDefinition<TValue = any[], TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = (RegleRuleDecl<NonNullable<TValue>, TCustomRules> & {
|
|
110
113
|
$each: RegleFormPropertyType<ArrayElement<TValue>, TCustomRules>;
|
|
111
114
|
}) | {
|
|
112
115
|
$each: RegleFormPropertyType<ArrayElement<TValue>, TCustomRules>;
|
|
113
116
|
};
|
|
114
117
|
|
|
118
|
+
/**
|
|
119
|
+
* @argument
|
|
120
|
+
* createRule arguments options
|
|
121
|
+
*/
|
|
122
|
+
interface RegleRuleInit<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition, TAsync extends boolean = TReturn extends Promise<any> ? true : false> {
|
|
123
|
+
type: {
|
|
124
|
+
value: TValue;
|
|
125
|
+
params: TParams;
|
|
126
|
+
};
|
|
127
|
+
validator: (value: Maybe<TValue>, ...args: TParams) => TReturn;
|
|
128
|
+
message: string | string[] | ((value: Maybe<TValue>, metadata: RegleRuleMetadataConsumer<TParams, TMetadata>) => string | string[]);
|
|
129
|
+
active?: boolean | ((value: Maybe<TValue>, metadata: RegleRuleMetadataConsumer<TParams, TMetadata>) => boolean);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @argument
|
|
133
|
+
* Rule core
|
|
134
|
+
*/
|
|
135
|
+
interface RegleRuleCore<TValue extends any, TParams extends any[] = [], TAsync extends boolean = false, TMetadata extends RegleRuleMetadataDefinition = boolean> {
|
|
136
|
+
validator: (value: Maybe<TValue>, ...args: TParams) => TAsync extends false ? TMetadata : Promise<TMetadata>;
|
|
137
|
+
message: string | ((value: Maybe<TValue>, metadata: RegleRuleMetadataConsumer<TParams, TMetadata>) => string | string[]);
|
|
138
|
+
active?: boolean | ((value: Maybe<TValue>, metadata: RegleRuleMetadataConsumer<TParams, TMetadata>) => boolean);
|
|
139
|
+
type?: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* @internal
|
|
143
|
+
* createRule arguments options
|
|
144
|
+
*/
|
|
145
|
+
interface $InternalRegleRuleInit {
|
|
146
|
+
validator: (value: any, ...args: any[]) => RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
|
|
147
|
+
message: string | ((value: any, metadata: $InternalRegleRuleMetadataConsumer) => string | string[]);
|
|
148
|
+
active?: boolean | ((value: any, metadata: $InternalRegleRuleMetadataConsumer) => boolean);
|
|
149
|
+
type?: string;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
type DefaultValidators = {
|
|
153
|
+
maxLength: RegleRuleWithParamsDefinition<string, [count: number]>;
|
|
154
|
+
required: RegleRuleDefinition<unknown, []>;
|
|
155
|
+
requiredIf: RegleRuleWithParamsDefinition<unknown, [condition: boolean]>;
|
|
156
|
+
requiredUnless: RegleRuleWithParamsDefinition<unknown, [condition: boolean]>;
|
|
157
|
+
alpha: RegleRuleDefinition<string>;
|
|
158
|
+
alphaNum: RegleRuleDefinition<string | number>;
|
|
159
|
+
between: RegleRuleWithParamsDefinition<number, [min: number, max: number]>;
|
|
160
|
+
decimal: RegleRuleDefinition<number | string>;
|
|
161
|
+
email: RegleRuleDefinition<string>;
|
|
162
|
+
integer: RegleRuleDefinition<number | string>;
|
|
163
|
+
maxValue: RegleRuleWithParamsDefinition<number, [count: number]>;
|
|
164
|
+
minLength: RegleRuleWithParamsDefinition<string | Record<PropertyKey, any> | any[], [
|
|
165
|
+
count: number
|
|
166
|
+
]>;
|
|
167
|
+
minValue: RegleRuleWithParamsDefinition<number, [count: number]>;
|
|
168
|
+
numeric: RegleRuleDefinition<number | string>;
|
|
169
|
+
sameAs: RegleRuleWithParamsDefinition<unknown, [target: unknown]>;
|
|
170
|
+
url: RegleRuleDefinition<string>;
|
|
171
|
+
dateAfter: RegleRuleWithParamsDefinition<Date, [after: Date]>;
|
|
172
|
+
dateBefore: RegleRuleWithParamsDefinition<Date, [before: Date]>;
|
|
173
|
+
dateBetween: RegleRuleWithParamsDefinition<Date, [before: Date, after: Date]>;
|
|
174
|
+
ipAddress: RegleRuleDefinition<string, [], false>;
|
|
175
|
+
macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false>;
|
|
176
|
+
};
|
|
177
|
+
|
|
115
178
|
type CustomRulesDeclarationTree = {
|
|
116
|
-
[x: string]: RegleRuleRaw<any, any> | undefined;
|
|
179
|
+
[x: string]: RegleRuleRaw<any, any, boolean, any> | undefined;
|
|
117
180
|
};
|
|
118
181
|
type AllRulesDeclarations = CustomRulesDeclarationTree & DefaultValidators;
|
|
119
182
|
|
|
@@ -123,6 +186,12 @@ type AllRulesDeclarations = CustomRulesDeclarationTree & DefaultValidators;
|
|
|
123
186
|
type ReglePartialValidationTree<TForm extends Record<string, any>, TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = {
|
|
124
187
|
[TKey in keyof TForm]?: RegleFormPropertyType<TForm[TKey], TCustomRules>;
|
|
125
188
|
};
|
|
189
|
+
/**
|
|
190
|
+
* @public
|
|
191
|
+
*/
|
|
192
|
+
type RegleValidationTree<TForm extends Record<string, any>, TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = {
|
|
193
|
+
[TKey in keyof TForm]: RegleFormPropertyType<TForm[TKey], TCustomRules>;
|
|
194
|
+
};
|
|
126
195
|
/**
|
|
127
196
|
* @internal
|
|
128
197
|
* @reference {@link ReglePartialValidationTree}
|
|
@@ -133,7 +202,7 @@ type $InternalReglePartialValidationTree = {
|
|
|
133
202
|
/**
|
|
134
203
|
* @public
|
|
135
204
|
*/
|
|
136
|
-
type RegleFormPropertyType<TValue = any, TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = [NonNullable<TValue>] extends [never] ? RegleRuleDecl<
|
|
205
|
+
type RegleFormPropertyType<TValue = any, TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = [NonNullable<TValue>] extends [never] ? RegleRuleDecl<TValue, TCustomRules> : NonNullable<TValue> extends Array<any> ? RegleCollectionRuleDecl<TValue, TCustomRules> : NonNullable<TValue> extends Date ? RegleRuleDecl<NonNullable<TValue>, TCustomRules> : NonNullable<TValue> extends File ? RegleRuleDecl<NonNullable<TValue>, TCustomRules> : NonNullable<TValue> extends Record<string, any> ? ReglePartialValidationTree<NonNullable<TValue>, TCustomRules> : RegleRuleDecl<NonNullable<TValue>, TCustomRules>;
|
|
137
206
|
/**
|
|
138
207
|
* @internal
|
|
139
208
|
* @reference {@link RegleFormPropertyType}
|
|
@@ -144,13 +213,13 @@ type $InternalFormPropertyTypes = $InternalRegleRuleDecl | $InternalRegleCollect
|
|
|
144
213
|
* Rule tree for a form property
|
|
145
214
|
*/
|
|
146
215
|
type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<AllRulesDeclarations> = Partial<AllRulesDeclarations>> = {
|
|
147
|
-
[TKey in keyof TCustomRules]?: TCustomRules[TKey] extends RegleRuleWithParamsDefinition<any, infer TParams> ? RegleRuleDefinition<TValue, TParams> : FormRuleDeclaration<TValue, any>;
|
|
216
|
+
[TKey in keyof TCustomRules]?: TCustomRules[TKey] extends RegleRuleWithParamsDefinition<any, infer TParams> ? RegleRuleDefinition<TValue, TParams> : FormRuleDeclaration<TValue, any, any, any>;
|
|
148
217
|
};
|
|
149
218
|
/**
|
|
150
219
|
* @internal
|
|
151
220
|
* @reference {@link RegleRuleDecl}
|
|
152
221
|
*/
|
|
153
|
-
type $InternalRegleRuleDecl = Record<string, FormRuleDeclaration<any, any>>;
|
|
222
|
+
type $InternalRegleRuleDecl = Record<string, FormRuleDeclaration<any, any, any, any>>;
|
|
154
223
|
/**
|
|
155
224
|
* @public
|
|
156
225
|
*/
|
|
@@ -170,12 +239,12 @@ type $InternalRegleCollectionRuleDecl = $InternalRegleRuleDecl & {
|
|
|
170
239
|
/**
|
|
171
240
|
* @public
|
|
172
241
|
*/
|
|
173
|
-
type InlineRuleDeclaration<TValue extends any = any> = (value: Maybe<TValue>, ...args: any[]) =>
|
|
242
|
+
type InlineRuleDeclaration<TValue extends any, TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition, TAsync extends boolean = TReturn extends Promise<any> ? true : false> = (value: Maybe<TValue>, ...args: any[]) => TReturn;
|
|
174
243
|
/**
|
|
175
244
|
* @public
|
|
176
245
|
* Regroup inline and registered rules
|
|
177
246
|
* */
|
|
178
|
-
type FormRuleDeclaration<TValue extends any, TParams extends any[] =
|
|
247
|
+
type FormRuleDeclaration<TValue extends any, TParams extends any[], TMetadata extends RegleRuleMetadataDefinition, TReturn extends TMetadata | Promise<TMetadata>, TAsync extends boolean = TReturn extends Promise<any> ? true : false> = InlineRuleDeclaration<TValue, TReturn, TMetadata, TAsync> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
|
|
179
248
|
|
|
180
249
|
type RegleErrorTree<TRules extends ReglePartialValidationTree<any, any>> = {
|
|
181
250
|
readonly [K in keyof TRules]: RegleValidationErrors<TRules[K]>;
|
|
@@ -271,7 +340,7 @@ interface RegleCommonStatus<TValue = any> {
|
|
|
271
340
|
*/
|
|
272
341
|
type RegleRuleStatus<TValue = any, TParams extends any[] = any[]> = {
|
|
273
342
|
readonly $type: string;
|
|
274
|
-
readonly $message: string;
|
|
343
|
+
readonly $message: string | string[];
|
|
275
344
|
readonly $active: boolean;
|
|
276
345
|
readonly $valid: boolean;
|
|
277
346
|
readonly $pending: boolean;
|
|
@@ -287,18 +356,17 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[]> = {
|
|
|
287
356
|
*/
|
|
288
357
|
interface $InternalRegleRuleStatus {
|
|
289
358
|
$type: string;
|
|
290
|
-
$message: string;
|
|
359
|
+
$message: string | string[];
|
|
291
360
|
$active: boolean;
|
|
292
361
|
$valid: boolean;
|
|
293
362
|
$pending: boolean;
|
|
294
363
|
$path: string;
|
|
295
364
|
$externalErrors?: string[];
|
|
296
365
|
$params?: any[];
|
|
297
|
-
$validator(value: any, ...args: any[]):
|
|
366
|
+
$validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
|
|
298
367
|
$validate(): Promise<boolean>;
|
|
299
368
|
$unwatch(): void;
|
|
300
369
|
$watch(): void;
|
|
301
|
-
$clearExternalErrors(): void;
|
|
302
370
|
}
|
|
303
371
|
/**
|
|
304
372
|
* @public
|
|
@@ -343,9 +411,9 @@ declare global {
|
|
|
343
411
|
}
|
|
344
412
|
|
|
345
413
|
/**
|
|
346
|
-
Matches any primitive, `Date`, or `RegExp` value.
|
|
414
|
+
Matches any primitive, `void`, `Date`, or `RegExp` value.
|
|
347
415
|
*/
|
|
348
|
-
type BuiltIns = Primitive | Date | RegExp;
|
|
416
|
+
type BuiltIns = Primitive | void | Date | RegExp;
|
|
349
417
|
|
|
350
418
|
/**
|
|
351
419
|
Test if the given function has multiple call signatures.
|
|
@@ -421,7 +489,7 @@ const partialSettings: PartialDeep<Settings, {recurseIntoArrays: true}> = {
|
|
|
421
489
|
@category Set
|
|
422
490
|
@category Map
|
|
423
491
|
*/
|
|
424
|
-
type PartialDeep<T, Options extends PartialDeepOptions = {}> = T extends BuiltIns
|
|
492
|
+
type PartialDeep<T, Options extends PartialDeepOptions = {}> = T extends BuiltIns | (((...arguments_: any[]) => unknown)) | (new (...arguments_: any[]) => unknown)
|
|
425
493
|
? T
|
|
426
494
|
: T extends Map<infer KeyType, infer ValueType>
|
|
427
495
|
? PartialMapDeep<KeyType, ValueType, Options>
|
|
@@ -431,19 +499,17 @@ type PartialDeep<T, Options extends PartialDeepOptions = {}> = T extends BuiltIn
|
|
|
431
499
|
? PartialReadonlyMapDeep<KeyType, ValueType, Options>
|
|
432
500
|
: T extends ReadonlySet<infer ItemType>
|
|
433
501
|
? PartialReadonlySetDeep<ItemType, Options>
|
|
434
|
-
: T extends
|
|
435
|
-
? T
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
: PartialObjectDeep<T, Options>
|
|
446
|
-
: unknown;
|
|
502
|
+
: T extends object
|
|
503
|
+
? T extends ReadonlyArray<infer ItemType> // Test for arrays/tuples, per https://github.com/microsoft/TypeScript/issues/35156
|
|
504
|
+
? Options['recurseIntoArrays'] extends true
|
|
505
|
+
? ItemType[] extends T // Test for arrays (non-tuples) specifically
|
|
506
|
+
? readonly ItemType[] extends T // Differentiate readonly and mutable arrays
|
|
507
|
+
? ReadonlyArray<PartialDeep<ItemType | undefined, Options>>
|
|
508
|
+
: Array<PartialDeep<ItemType | undefined, Options>>
|
|
509
|
+
: PartialObjectDeep<T, Options> // Tuples behave properly
|
|
510
|
+
: T // If they don't opt into array testing, just use the original type
|
|
511
|
+
: PartialObjectDeep<T, Options>
|
|
512
|
+
: unknown;
|
|
447
513
|
|
|
448
514
|
/**
|
|
449
515
|
Same as `PartialDeep`, but accepts only `Map`s and as inputs. Internal helper for `PartialDeep`.
|
|
@@ -595,7 +661,42 @@ interface LocalRegleBehaviourOptions<TState extends Record<string, any>> {
|
|
|
595
661
|
}
|
|
596
662
|
type ResolvedRegleBehaviourOptions = DeepMaybeRef$1<RequiredDeep<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Record<string, any>>;
|
|
597
663
|
|
|
598
|
-
|
|
664
|
+
/**
|
|
665
|
+
* @description
|
|
666
|
+
* Create a typed custom rule that can be used like default validators.
|
|
667
|
+
* It can also be declared in the global options
|
|
668
|
+
*
|
|
669
|
+
* It will automatically detect if the rule is async
|
|
670
|
+
*
|
|
671
|
+
* @typeParam TValue - The input value the rule should receive
|
|
672
|
+
* @typeParam TParams - Tuple declaration of the rule parameters (if any)
|
|
673
|
+
*
|
|
674
|
+
* @param definition - The rule processors object
|
|
675
|
+
*
|
|
676
|
+
* @returns A rule definition that can be callable depending on params presence
|
|
677
|
+
*
|
|
678
|
+
* @exemple
|
|
679
|
+
*
|
|
680
|
+
* ```ts
|
|
681
|
+
* // Create a simple rule with no params
|
|
682
|
+
* import {ruleHelpers} from '@regle/validators';
|
|
683
|
+
*
|
|
684
|
+
* export const isFoo = createRule<string>({
|
|
685
|
+
* validator(value) {
|
|
686
|
+
* if (ruleHelpers.isFilled(value)) {
|
|
687
|
+
* return value === 'foo';
|
|
688
|
+
* }
|
|
689
|
+
* return true
|
|
690
|
+
* },
|
|
691
|
+
* message: "The value should be 'foo'"
|
|
692
|
+
* })
|
|
693
|
+
* ```
|
|
694
|
+
*/
|
|
695
|
+
declare function createRule<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>(definition: RegleRuleInit<TValue, TParams, TReturn, TMetadata, TAsync>): InferRegleRule<TValue, TParams, TAsync, TMetadata>;
|
|
696
|
+
declare function defineType<TValue extends any = unknown, TParams extends any[] = []>(ruleName: string): {
|
|
697
|
+
value: TValue;
|
|
698
|
+
params: TParams;
|
|
699
|
+
};
|
|
599
700
|
|
|
600
701
|
/**
|
|
601
702
|
* Returns a clean list of parameters
|
|
@@ -603,6 +704,8 @@ declare function createRule<TValue extends any, TParams extends any[] = [], TTyp
|
|
|
603
704
|
*/
|
|
604
705
|
declare function unwrapRuleParameters<TParams extends any[]>(params: ParamDecl[]): TParams;
|
|
605
706
|
|
|
707
|
+
declare const useRegle: <TState extends Record<string, any>, TRules extends ReglePartialValidationTree<TState, Partial<AllRulesDeclarations>>>(state: Ref<TState> | DeepReactiveState$1<TState>, rulesFactory: ComputedRef<TRules> | (() => TRules), options?: (Partial<DeepMaybeRef$1<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<TState>) | undefined) => Regle<TState, TRules>;
|
|
708
|
+
|
|
606
709
|
/**
|
|
607
710
|
* Root function that allows you to define project-wise all your custom validators or overwrite default ones
|
|
608
711
|
*
|
|
@@ -610,9 +713,9 @@ declare function unwrapRuleParameters<TParams extends any[]>(params: ParamDecl[]
|
|
|
610
713
|
*
|
|
611
714
|
* @param customRules
|
|
612
715
|
*/
|
|
613
|
-
declare function
|
|
716
|
+
declare function defineRegleConfig<TCustomRules extends Partial<AllRulesDeclarations>>({ rules, options, }: {
|
|
614
717
|
rules?: () => TCustomRules;
|
|
615
718
|
options?: RegleBehaviourOptions;
|
|
616
719
|
}): <TState extends Record<string, any>, TRules extends ReglePartialValidationTree<TState, Partial<AllRulesDeclarations> & TCustomRules>>(state: vue.Ref<TState> | DeepReactiveState<TState>, rulesFactory: vue.ComputedRef<TRules> | (() => TRules), options?: (Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<TState>) | undefined) => Regle<TState, TRules>;
|
|
617
720
|
|
|
618
|
-
export { $InternalExternalRegleErrors, $InternalFormPropertyTypes, $InternalRegleCollectionRuleDecl, $InternalRegleCollectionStatus, $InternalRegleErrors, $InternalRegleFieldStatus, $InternalReglePartialValidationTree, $InternalRegleRuleDecl, $InternalRegleRuleStatus, $InternalRegleStatus, $InternalRegleStatusType, AllRulesDeclarations, ArrayElement, CustomRulesDeclarationTree, DataType, DeepMaybeRef, ExcludeFromTuple, FormRuleDeclaration, InferRegleRule, InferRegleStatusType, InlineRuleDeclaration, InternalRuleType, LocalRegleBehaviourOptions, Maybe, MaybeNull, ParamDecl, Regle, RegleBehaviourOptions, RegleCollectionErrors, RegleCollectionRuleDecl, RegleCollectionRuleDefinition, RegleCollectionStatus, RegleCommonStatus, RegleErrorTree, RegleExternalCollectionErrors, RegleExternalErrorTree, RegleExternalValidationErrors, RegleFieldStatus, RegleFormPropertyType, RegleInternalRuleDefs, ReglePartialValidationTree, RegleRuleDecl, RegleRuleDefinition, RegleRuleDefinitionProcessor, RegleRuleInit, RegleRuleRaw, RegleRuleStatus, RegleRuleWithParamsDefinition, RegleStatus, RegleUniversalParams, RegleValidationErrors, ResolvedRegleBehaviourOptions, UnrefTuple, UnwrapRegleUniversalParams, createRule,
|
|
721
|
+
export { type $InternalExternalRegleErrors, type $InternalFormPropertyTypes, type $InternalRegleCollectionRuleDecl, type $InternalRegleCollectionStatus, type $InternalRegleErrors, type $InternalRegleFieldStatus, type $InternalReglePartialValidationTree, type $InternalRegleRuleDecl, type $InternalRegleRuleDefinition, type $InternalRegleRuleInit, type $InternalRegleRuleMetadataConsumer, type $InternalRegleRuleStatus, type $InternalRegleStatus, type $InternalRegleStatusType, type AllRulesDeclarations, type ArrayElement, type CustomRulesDeclarationTree, type DataType, type DeepMaybeRef, type ExcludeByType, type ExcludeFromTuple, type FormRuleDeclaration, type InferRegleRule, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type LocalRegleBehaviourOptions, type Maybe, type MaybeNull, type ParamDecl, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalValidationErrors, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialValidationTree, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleWithParamsDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationTree, type ResolvedRegleBehaviourOptions, type UnrefTuple, type UnwrapRegleUniversalParams, createRule, defineRegleConfig, defineType, unwrapRuleParameters, useRegle };
|