@cleverbrush/schema 1.1.11 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1314 -101
- package/dist/builders/AnySchemaBuilder.d.ts +54 -14
- package/dist/builders/AnySchemaBuilder.js +2 -112
- package/dist/builders/AnySchemaBuilder.js.map +1 -0
- package/dist/builders/ArraySchemaBuilder.d.ts +124 -23
- package/dist/builders/ArraySchemaBuilder.js +2 -284
- package/dist/builders/ArraySchemaBuilder.js.map +1 -0
- package/dist/builders/BooleanSchemaBuilder.d.ts +94 -19
- package/dist/builders/BooleanSchemaBuilder.js +2 -150
- package/dist/builders/BooleanSchemaBuilder.js.map +1 -0
- package/dist/builders/DateSchemaBuilder.d.ts +134 -34
- package/dist/builders/DateSchemaBuilder.js +2 -433
- package/dist/builders/DateSchemaBuilder.js.map +1 -0
- package/dist/builders/ExternSchemaBuilder.d.ts +200 -0
- package/dist/builders/ExternSchemaBuilder.js +2 -0
- package/dist/builders/ExternSchemaBuilder.js.map +1 -0
- package/dist/builders/FunctionSchemaBuilder.d.ts +57 -14
- package/dist/builders/FunctionSchemaBuilder.js +2 -113
- package/dist/builders/FunctionSchemaBuilder.js.map +1 -0
- package/dist/builders/LazySchemaBuilder.d.ts +167 -0
- package/dist/builders/NullSchemaBuilder.d.ts +162 -0
- package/dist/builders/NumberSchemaBuilder.d.ts +143 -31
- package/dist/builders/NumberSchemaBuilder.js +2 -386
- package/dist/builders/NumberSchemaBuilder.js.map +1 -0
- package/dist/builders/ObjectSchemaBuilder.d.ts +266 -61
- package/dist/builders/ObjectSchemaBuilder.js +2 -589
- package/dist/builders/ObjectSchemaBuilder.js.map +1 -0
- package/dist/builders/PropertyValidationResult.d.ts +68 -0
- package/dist/builders/RecordSchemaBuilder.d.ts +341 -0
- package/dist/builders/RecordSchemaBuilder.js +2 -0
- package/dist/builders/RecordSchemaBuilder.js.map +1 -0
- package/dist/builders/SchemaBuilder.d.ts +818 -30
- package/dist/builders/StringSchemaBuilder.d.ts +152 -37
- package/dist/builders/StringSchemaBuilder.js +2 -414
- package/dist/builders/StringSchemaBuilder.js.map +1 -0
- package/dist/builders/TupleSchemaBuilder.d.ts +248 -0
- package/dist/builders/TupleSchemaBuilder.js +2 -0
- package/dist/builders/TupleSchemaBuilder.js.map +1 -0
- package/dist/builders/UnionSchemaBuilder.d.ts +133 -39
- package/dist/builders/UnionSchemaBuilder.js +2 -216
- package/dist/builders/UnionSchemaBuilder.js.map +1 -0
- package/dist/chunk-BFCMDDTX.js +2 -0
- package/dist/chunk-BFCMDDTX.js.map +1 -0
- package/dist/chunk-CTP4RHDG.js +2 -0
- package/dist/chunk-CTP4RHDG.js.map +1 -0
- package/dist/chunk-EUQ5AE3H.js +2 -0
- package/dist/chunk-EUQ5AE3H.js.map +1 -0
- package/dist/chunk-FWUEUW2N.js +2 -0
- package/dist/chunk-FWUEUW2N.js.map +1 -0
- package/dist/chunk-IJ6FO37G.js +2 -0
- package/dist/chunk-IJ6FO37G.js.map +1 -0
- package/dist/chunk-KESLT5EE.js +2 -0
- package/dist/chunk-KESLT5EE.js.map +1 -0
- package/dist/chunk-KFTO7TMB.js +2 -0
- package/dist/chunk-KFTO7TMB.js.map +1 -0
- package/dist/chunk-MKAYFPAR.js +2 -0
- package/dist/chunk-MKAYFPAR.js.map +1 -0
- package/dist/chunk-NXPH3ZUW.js +2 -0
- package/dist/chunk-NXPH3ZUW.js.map +1 -0
- package/dist/chunk-S5TC6NSU.js +2 -0
- package/dist/chunk-S5TC6NSU.js.map +1 -0
- package/dist/chunk-YWBNVHR6.js +2 -0
- package/dist/chunk-YWBNVHR6.js.map +1 -0
- package/dist/chunk-Z7QZ7IXT.js +2 -0
- package/dist/chunk-Z7QZ7IXT.js.map +1 -0
- package/dist/chunk-ZAN4ZHCJ.js +2 -0
- package/dist/chunk-ZAN4ZHCJ.js.map +1 -0
- package/dist/chunk-ZUPYV5TI.js +2 -0
- package/dist/chunk-ZUPYV5TI.js.map +1 -0
- package/dist/core.d.ts +23 -0
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -0
- package/dist/extension.d.ts +413 -0
- package/dist/extensions/array.d.ts +112 -0
- package/dist/extensions/enum.d.ts +190 -0
- package/dist/extensions/index.d.ts +108 -0
- package/dist/extensions/nullable.d.ts +26 -0
- package/dist/extensions/number.d.ts +228 -0
- package/dist/extensions/string.d.ts +332 -0
- package/dist/extensions/util.d.ts +45 -0
- package/dist/index.d.ts +7 -20
- package/dist/index.js +2 -19
- package/dist/index.js.map +1 -0
- package/dist/utils/transaction.d.ts +27 -4
- package/package.json +74 -6
- package/dist/builders/SchemaBuilder.js +0 -275
- package/dist/utils/transaction.js +0 -178
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type BRAND, SchemaBuilder, type ValidationContext, type ValidationErrorMessageProvider, type ValidationResult } from './SchemaBuilder.js';
|
|
2
2
|
type AnySchemaBuilderCreateProps<R extends boolean = true> = Partial<ReturnType<AnySchemaBuilder<R>['introspect']>>;
|
|
3
3
|
/**
|
|
4
4
|
* Any schema builder class. Similar to the `any` type
|
|
@@ -12,40 +12,80 @@ type AnySchemaBuilderCreateProps<R extends boolean = true> = Partial<ReturnType<
|
|
|
12
12
|
* @example
|
|
13
13
|
* ```ts
|
|
14
14
|
* const schema = any();
|
|
15
|
-
* const result =
|
|
15
|
+
* const result = schema.validate(123);
|
|
16
16
|
* // result.valid === true
|
|
17
17
|
* // result.object === 123
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
|
-
export declare class AnySchemaBuilder<TRequired extends boolean = true, TExplicitType = undefined, TResult = TExplicitType extends undefined ? any : TExplicitType> extends SchemaBuilder<TResult, TRequired> {
|
|
20
|
+
export declare class AnySchemaBuilder<TRequired extends boolean = true, TNullable extends boolean = false, TExplicitType = undefined, THasDefault extends boolean = false, TExtensions = {}, TResult = TExplicitType extends undefined ? any : TExplicitType> extends SchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> {
|
|
21
|
+
#private;
|
|
21
22
|
/**
|
|
22
23
|
* @hidden
|
|
23
24
|
*/
|
|
24
|
-
static create(props: AnySchemaBuilderCreateProps<any>): AnySchemaBuilder<true, undefined, any>;
|
|
25
|
-
|
|
25
|
+
static create(props: AnySchemaBuilderCreateProps<any>): AnySchemaBuilder<true, false, undefined, false, {}, any>;
|
|
26
|
+
protected constructor(props: AnySchemaBuilderCreateProps<TRequired>);
|
|
26
27
|
/**
|
|
27
|
-
* @
|
|
28
|
+
* @inheritdoc
|
|
28
29
|
*/
|
|
29
|
-
hasType<T>(
|
|
30
|
+
hasType<T>(_notUsed?: T): AnySchemaBuilder<true, TNullable, T, THasDefault, TExtensions> & TExtensions;
|
|
30
31
|
/**
|
|
31
|
-
* @
|
|
32
|
+
* @inheritdoc
|
|
33
|
+
*/
|
|
34
|
+
clearHasType(): AnySchemaBuilder<TRequired, TNullable, undefined, THasDefault, TExtensions> & TExtensions;
|
|
35
|
+
/** {@inheritDoc SchemaBuilder.validate} */
|
|
36
|
+
validate(object: TResult, context?: ValidationContext): ValidationResult<TResult>;
|
|
37
|
+
/** {@inheritDoc SchemaBuilder.validateAsync} */
|
|
38
|
+
validateAsync(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
|
|
39
|
+
/**
|
|
40
|
+
* Performs synchronous validation of the schema over `object`.
|
|
41
|
+
* Throws if any preprocessor, validator, or error message provider returns a Promise.
|
|
42
|
+
* @param context Optional `ValidationContext` settings.
|
|
32
43
|
*/
|
|
33
|
-
|
|
44
|
+
protected _validate(object: TResult, context?: ValidationContext): ValidationResult<TResult>;
|
|
34
45
|
/**
|
|
35
|
-
* Performs validation of the schema over `object`.
|
|
36
|
-
* validators,
|
|
46
|
+
* Performs async validation of the schema over `object`.
|
|
47
|
+
* Supports async preprocessors, validators, and error message providers.
|
|
37
48
|
* @param context Optional `ValidationContext` settings.
|
|
38
49
|
*/
|
|
39
|
-
|
|
50
|
+
protected _validateAsync(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
|
|
40
51
|
protected createFromProps<TReq extends boolean>(props: AnySchemaBuilderCreateProps<TReq>): this;
|
|
41
52
|
/**
|
|
42
53
|
* @hidden
|
|
43
54
|
*/
|
|
44
|
-
required(): AnySchemaBuilder<true, TExplicitType
|
|
55
|
+
required(errorMessage?: ValidationErrorMessageProvider): AnySchemaBuilder<true, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
56
|
+
/**
|
|
57
|
+
* @hidden
|
|
58
|
+
*/
|
|
59
|
+
optional(): AnySchemaBuilder<false, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
60
|
+
/**
|
|
61
|
+
* @hidden
|
|
62
|
+
*/
|
|
63
|
+
default(value: TResult | (() => TResult)): AnySchemaBuilder<true, TNullable, TExplicitType, true, TExtensions> & TExtensions;
|
|
64
|
+
/**
|
|
65
|
+
* @hidden
|
|
66
|
+
*/
|
|
67
|
+
clearDefault(): AnySchemaBuilder<TRequired, TNullable, TExplicitType, false, TExtensions> & TExtensions;
|
|
68
|
+
/**
|
|
69
|
+
* @hidden
|
|
70
|
+
*/
|
|
71
|
+
brand<TBrand extends string | symbol>(_name?: TBrand): AnySchemaBuilder<TRequired, TNullable, TResult & {
|
|
72
|
+
readonly [K in BRAND]: TBrand;
|
|
73
|
+
}, THasDefault, TExtensions> & TExtensions;
|
|
74
|
+
/**
|
|
75
|
+
* Marks the inferred type as `Readonly<T>`. Sets the `isReadonly`
|
|
76
|
+
* introspection flag for tooling consistency.
|
|
77
|
+
*
|
|
78
|
+
* @see {@link SchemaBuilder.readonly}
|
|
79
|
+
*/
|
|
80
|
+
readonly(): AnySchemaBuilder<TRequired, TNullable, Readonly<TResult>, THasDefault, TExtensions> & TExtensions;
|
|
81
|
+
/**
|
|
82
|
+
* @hidden
|
|
83
|
+
*/
|
|
84
|
+
nullable(): AnySchemaBuilder<TRequired, true, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
45
85
|
/**
|
|
46
86
|
* @hidden
|
|
47
87
|
*/
|
|
48
|
-
|
|
88
|
+
notNullable(): AnySchemaBuilder<TRequired, false, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
49
89
|
}
|
|
50
90
|
/**
|
|
51
91
|
* Creates a `any` schema.
|
|
@@ -1,112 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
* Any schema builder class. Similar to the `any` type
|
|
4
|
-
* in TypeScript. Allows to define a schema for `any` value.
|
|
5
|
-
* Use it when you don't know the type of the value.
|
|
6
|
-
*
|
|
7
|
-
* **NOTE** this class is exported only to give opportunity to extend it
|
|
8
|
-
* by inheriting. It is not recommended to create an instance of this class
|
|
9
|
-
* directly. Use `any()` function instead.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* const schema = any();
|
|
14
|
-
* const result = await schema.validate(123);
|
|
15
|
-
* // result.valid === true
|
|
16
|
-
* // result.object === 123
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export class AnySchemaBuilder extends SchemaBuilder {
|
|
20
|
-
/**
|
|
21
|
-
* @hidden
|
|
22
|
-
*/
|
|
23
|
-
static create(props) {
|
|
24
|
-
return new AnySchemaBuilder({
|
|
25
|
-
type: 'any',
|
|
26
|
-
...props
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
constructor(props) {
|
|
30
|
-
super(props);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* @hidden
|
|
34
|
-
*/
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
36
|
-
hasType(notUsed) {
|
|
37
|
-
return this.createFromProps({
|
|
38
|
-
...this.introspect()
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* @hidden
|
|
43
|
-
*/
|
|
44
|
-
clearHasType() {
|
|
45
|
-
return this.createFromProps({
|
|
46
|
-
...this.introspect()
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Performs validation of the schema over `object`. Basically runs
|
|
51
|
-
* validators, preprocessors and checks for required (if schema is not optional).
|
|
52
|
-
* @param context Optional `ValidationContext` settings.
|
|
53
|
-
*/
|
|
54
|
-
async validate(object, context) {
|
|
55
|
-
const superResult = await super.preValidate(object, context);
|
|
56
|
-
const { valid, transaction: preValidationTransaction, errors } = superResult;
|
|
57
|
-
if (!valid) {
|
|
58
|
-
return {
|
|
59
|
-
valid,
|
|
60
|
-
errors
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
const { object: { validatedObject: objToValidate } } = preValidationTransaction;
|
|
64
|
-
return {
|
|
65
|
-
valid: true,
|
|
66
|
-
object: objToValidate
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
createFromProps(props) {
|
|
70
|
-
return AnySchemaBuilder.create(props);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* @hidden
|
|
74
|
-
*/
|
|
75
|
-
required() {
|
|
76
|
-
return super.required();
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* @hidden
|
|
80
|
-
*/
|
|
81
|
-
optional() {
|
|
82
|
-
return super.optional();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Creates a `any` schema.
|
|
87
|
-
* @example
|
|
88
|
-
* ```
|
|
89
|
-
* const anyObject = any();
|
|
90
|
-
*
|
|
91
|
-
* // null - invalid
|
|
92
|
-
* // undefined - invalid
|
|
93
|
-
* // string - valid
|
|
94
|
-
* // {} - valid
|
|
95
|
-
* // Date -valid
|
|
96
|
-
* // { someProp: 123 } - valid
|
|
97
|
-
* // etc
|
|
98
|
-
* ```
|
|
99
|
-
* @example
|
|
100
|
-
* ```
|
|
101
|
-
* const anyObject = any().optional();
|
|
102
|
-
* // null - valid
|
|
103
|
-
* // undefined - valid
|
|
104
|
-
* // string - valid
|
|
105
|
-
* // {} - valid
|
|
106
|
-
* // Date -valid
|
|
107
|
-
* // { someProp: 123 } - valid
|
|
108
|
-
* ```
|
|
109
|
-
*/
|
|
110
|
-
export const any = () => AnySchemaBuilder.create({
|
|
111
|
-
isRequired: true
|
|
112
|
-
});
|
|
1
|
+
import{a,b}from"../chunk-ZAN4ZHCJ.js";import"../chunk-CTP4RHDG.js";export{a as AnySchemaBuilder,b as any};
|
|
2
|
+
//# sourceMappingURL=AnySchemaBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,5 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type
|
|
1
|
+
import type { ObjectSchemaBuilder, ObjectSchemaValidationResult } from './ObjectSchemaBuilder.js';
|
|
2
|
+
import { type BRAND, type InferType, type NestedValidationResult, SchemaBuilder, type ValidationContext, type ValidationErrorMessageProvider, type ValidationResult } from './SchemaBuilder.js';
|
|
3
|
+
import type { UnionSchemaBuilder, UnionSchemaValidationResult } from './UnionSchemaBuilder.js';
|
|
4
|
+
/**
|
|
5
|
+
* Maps an element schema type to the appropriate validation result type.
|
|
6
|
+
* Union schema elements get `UnionSchemaValidationResult`,
|
|
7
|
+
* Object schema elements get `ObjectSchemaValidationResult`,
|
|
8
|
+
* other types get `ValidationResult`.
|
|
9
|
+
*/
|
|
10
|
+
export type ElementValidationResult<TElementSchema extends SchemaBuilder<any, any, any, any, any>> = TElementSchema extends UnionSchemaBuilder<infer UOptions extends readonly SchemaBuilder<any, any, any, any, any>[], any, any> ? UnionSchemaValidationResult<InferType<TElementSchema>, UOptions> : TElementSchema extends ObjectSchemaBuilder<any, any, any, any, any> ? ObjectSchemaValidationResult<InferType<TElementSchema>, TElementSchema> : ValidationResult<InferType<TElementSchema>>;
|
|
11
|
+
/**
|
|
12
|
+
* Validation result type returned by `ArraySchemaBuilder.validate()`.
|
|
13
|
+
* Extends `ValidationResult` with `getNestedErrors` for root-level array
|
|
14
|
+
* errors and per-element validation results.
|
|
15
|
+
*/
|
|
16
|
+
export type ArraySchemaValidationResult<TResult, TElementSchema extends SchemaBuilder<any, any, any, any, any>> = ValidationResult<TResult> & {
|
|
17
|
+
/**
|
|
18
|
+
* Returns root-level array validation errors combined with
|
|
19
|
+
* per-element validation results.
|
|
20
|
+
* The returned value has both `NestedValidationResult` properties
|
|
21
|
+
* (`errors`, `isValid`, `descriptor`, `seenValue`) and indexed
|
|
22
|
+
* element results (`[0]`, `[1]`, etc.).
|
|
23
|
+
*/
|
|
24
|
+
getNestedErrors(): Array<ElementValidationResult<TElementSchema>> & NestedValidationResult<any, any, any>;
|
|
25
|
+
};
|
|
26
|
+
type ArraySchemaBuilderCreateProps<TElementSchema extends SchemaBuilder<any, any, any, any, any>, R extends boolean = true> = Partial<ReturnType<ArraySchemaBuilder<TElementSchema, R>['introspect']>>;
|
|
3
27
|
/**
|
|
4
28
|
* Similar to the `Array` type in TypeScript. It can be used to validate arrays of any type.
|
|
5
29
|
* It can also be used to validate arrays of specific type.
|
|
@@ -18,27 +42,41 @@ type ArraySchemaBuilderCreateProps<TElementSchema extends SchemaBuilder<any, any
|
|
|
18
42
|
* directly. Use {@link array | array()} function instead.
|
|
19
43
|
* @see {@link array}
|
|
20
44
|
*/
|
|
21
|
-
export declare class ArraySchemaBuilder<TElementSchema extends SchemaBuilder<any, any>, TRequired extends boolean = true, TExplicitType = undefined, TResult = TExplicitType extends undefined ? TElementSchema extends undefined ? Array<any> : TElementSchema extends SchemaBuilder<infer T1, infer T2> ? Array<InferType<SchemaBuilder<T1, T2>>> : never : TExplicitType> extends SchemaBuilder<TResult, TRequired> {
|
|
45
|
+
export declare class ArraySchemaBuilder<TElementSchema extends SchemaBuilder<any, any, any, any, any>, TRequired extends boolean = true, TNullable extends boolean = false, TExplicitType = undefined, THasDefault extends boolean = false, TExtensions = {}, TResult = TExplicitType extends undefined ? TElementSchema extends undefined ? Array<any> : TElementSchema extends SchemaBuilder<infer T1, infer T2> ? Array<InferType<SchemaBuilder<T1, T2>>> : never : TExplicitType> extends SchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> {
|
|
22
46
|
#private;
|
|
23
47
|
/**
|
|
24
48
|
* @hidden
|
|
25
49
|
*/
|
|
26
|
-
static create(props: ArraySchemaBuilderCreateProps<any, any>): ArraySchemaBuilder<SchemaBuilder<any, any>, true, undefined, any[]>;
|
|
27
|
-
|
|
50
|
+
static create(props: ArraySchemaBuilderCreateProps<any, any>): ArraySchemaBuilder<SchemaBuilder<any, any, any, any, any>, true, false, undefined, false, {}, any[]>;
|
|
51
|
+
protected constructor(props: ArraySchemaBuilderCreateProps<TElementSchema, TRequired>);
|
|
28
52
|
/**
|
|
29
|
-
* @
|
|
53
|
+
* @inheritdoc
|
|
30
54
|
*/
|
|
31
|
-
hasType<T>(
|
|
55
|
+
hasType<T>(_notUsed?: T): ArraySchemaBuilder<TElementSchema, true, TNullable, T, THasDefault, TExtensions> & TExtensions;
|
|
32
56
|
/**
|
|
33
|
-
* @
|
|
57
|
+
* @inheritdoc
|
|
34
58
|
*/
|
|
35
|
-
clearHasType(): ArraySchemaBuilder<TElementSchema, TRequired, undefined
|
|
59
|
+
clearHasType(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, undefined, THasDefault, TExtensions> & TExtensions;
|
|
36
60
|
/**
|
|
37
|
-
* Performs
|
|
38
|
-
|
|
61
|
+
* Performs synchronous validation of the schema over `object`. {@inheritDoc SchemaBuilder.validate}
|
|
62
|
+
*/
|
|
63
|
+
validate(object: TResult, context?: ValidationContext): ArraySchemaValidationResult<TResult, TElementSchema>;
|
|
64
|
+
/**
|
|
65
|
+
* Performs asynchronous validation of the schema over `object`. {@inheritDoc SchemaBuilder.validateAsync}
|
|
66
|
+
*/
|
|
67
|
+
validateAsync(object: TResult, context?: ValidationContext): Promise<ArraySchemaValidationResult<TResult, TElementSchema>>;
|
|
68
|
+
/**
|
|
69
|
+
* Performs synchronous validation of the schema over `object`.
|
|
70
|
+
* Throws if any preprocessor, validator, or error message provider returns a Promise.
|
|
39
71
|
* @param context Optional `ValidationContext` settings.
|
|
40
72
|
*/
|
|
41
|
-
|
|
73
|
+
protected _validate(object: TResult, context?: ValidationContext): ArraySchemaValidationResult<TResult, TElementSchema>;
|
|
74
|
+
/**
|
|
75
|
+
* Performs async validation of the schema over `object`.
|
|
76
|
+
* Supports async preprocessors, validators, and error message providers.
|
|
77
|
+
* @param context Optional `ValidationContext` settings.
|
|
78
|
+
*/
|
|
79
|
+
protected _validateAsync(object: TResult, context?: ValidationContext): Promise<ArraySchemaValidationResult<TResult, TElementSchema>>;
|
|
42
80
|
/**
|
|
43
81
|
* @hidden
|
|
44
82
|
*/
|
|
@@ -46,11 +84,33 @@ export declare class ArraySchemaBuilder<TElementSchema extends SchemaBuilder<any
|
|
|
46
84
|
/**
|
|
47
85
|
* @hidden
|
|
48
86
|
*/
|
|
49
|
-
required(): ArraySchemaBuilder<TElementSchema, true, TExplicitType
|
|
87
|
+
required(errorMessage?: ValidationErrorMessageProvider): ArraySchemaBuilder<TElementSchema, true, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
88
|
+
/**
|
|
89
|
+
* @hidden
|
|
90
|
+
*/
|
|
91
|
+
optional(): ArraySchemaBuilder<TElementSchema, false, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
92
|
+
/**
|
|
93
|
+
* @hidden
|
|
94
|
+
*/
|
|
95
|
+
default(value: TResult | (() => TResult)): ArraySchemaBuilder<TElementSchema, true, TNullable, TExplicitType, true, TExtensions> & TExtensions;
|
|
50
96
|
/**
|
|
51
97
|
* @hidden
|
|
52
98
|
*/
|
|
53
|
-
|
|
99
|
+
clearDefault(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, false, TExtensions> & TExtensions;
|
|
100
|
+
/**
|
|
101
|
+
* @hidden
|
|
102
|
+
*/
|
|
103
|
+
brand<TBrand extends string | symbol>(_name?: TBrand): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TResult & {
|
|
104
|
+
readonly [K in BRAND]: TBrand;
|
|
105
|
+
}, THasDefault, TExtensions> & TExtensions;
|
|
106
|
+
/**
|
|
107
|
+
* Marks the inferred type as `ReadonlyArray<T>` — disables `push`,
|
|
108
|
+
* `pop`, and other mutating methods at the type level. Validation
|
|
109
|
+
* behaviour is unchanged.
|
|
110
|
+
*
|
|
111
|
+
* @see {@link SchemaBuilder.readonly}
|
|
112
|
+
*/
|
|
113
|
+
readonly(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, ReadonlyArray<TElementSchema extends SchemaBuilder<infer T1, infer T2> ? InferType<SchemaBuilder<T1, T2>> : any>, THasDefault, TExtensions> & TExtensions;
|
|
54
114
|
introspect(): {
|
|
55
115
|
/**
|
|
56
116
|
* Schema of array item (if defined)
|
|
@@ -60,38 +120,79 @@ export declare class ArraySchemaBuilder<TElementSchema extends SchemaBuilder<any
|
|
|
60
120
|
* Min length of a valid array
|
|
61
121
|
*/
|
|
62
122
|
minLength: number | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* Min length validation error message provider.
|
|
125
|
+
* If not provided, default error message provider is used.
|
|
126
|
+
*/
|
|
127
|
+
minLengthValidationErrorMessageProvider: ValidationErrorMessageProvider<ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, false, {}, TExplicitType extends undefined ? TElementSchema extends undefined ? any[] : TElementSchema extends SchemaBuilder<infer T1, infer T2 extends boolean, false, false, {}> ? (T2 extends true ? T1 : T1 | undefined)[] : never : TExplicitType>>;
|
|
63
128
|
/**
|
|
64
129
|
* Max length of a valid array
|
|
65
130
|
*/
|
|
66
131
|
maxLength: number | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* Max length validation error message provider.
|
|
134
|
+
* If not provided, default error message provider is used.
|
|
135
|
+
*/
|
|
136
|
+
maxLengthValidationErrorMessageProvider: ValidationErrorMessageProvider<ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, false, {}, TExplicitType extends undefined ? TElementSchema extends undefined ? any[] : TElementSchema extends SchemaBuilder<infer T1, infer T2 extends boolean, false, false, {}> ? (T2 extends true ? T1 : T1 | undefined)[] : never : TExplicitType>>;
|
|
67
137
|
type: string;
|
|
68
138
|
isRequired: boolean;
|
|
69
|
-
|
|
70
|
-
|
|
139
|
+
isNullable: boolean;
|
|
140
|
+
isReadonly: boolean;
|
|
141
|
+
preprocessors: readonly import("./SchemaBuilder.js").PreprocessorEntry<TResult>[];
|
|
142
|
+
validators: readonly import("./SchemaBuilder.js").ValidatorEntry<TResult>[];
|
|
143
|
+
requiredValidationErrorMessageProvider: ValidationErrorMessageProvider<SchemaBuilder<any, any, any, any, any>>;
|
|
144
|
+
extensions: {
|
|
145
|
+
[x: string]: unknown;
|
|
146
|
+
};
|
|
147
|
+
hasDefault: boolean;
|
|
148
|
+
defaultValue: TResult | (() => TResult) | undefined;
|
|
149
|
+
description: string | undefined;
|
|
150
|
+
hasCatch: boolean;
|
|
151
|
+
catchValue: TResult | (() => TResult) | undefined;
|
|
71
152
|
};
|
|
72
153
|
/**
|
|
73
154
|
* Set a schema that every array item has to satisfy. If it is not set,
|
|
74
155
|
* Item of any type is allowed.
|
|
75
156
|
* @param schema Schema that every array item has to satisfy
|
|
76
157
|
*/
|
|
77
|
-
of<TSchema extends SchemaBuilder<any, any>>(schema: TSchema): ArraySchemaBuilder<TSchema, TRequired, TExplicitType
|
|
78
|
-
|
|
158
|
+
of<TSchema extends SchemaBuilder<any, any, any, any, any>>(schema: TSchema): ArraySchemaBuilder<TSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
159
|
+
/**
|
|
160
|
+
* Clears the element schema set by `of()`. After this call,
|
|
161
|
+
* array items of any type will be accepted.
|
|
162
|
+
*/
|
|
163
|
+
clearOf(): ArraySchemaBuilder<any, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
79
164
|
/**
|
|
80
165
|
* Set minimal length of the valid array value for schema.
|
|
81
166
|
*/
|
|
82
|
-
minLength<T extends number>(length: T
|
|
167
|
+
minLength<T extends number>(length: T,
|
|
168
|
+
/**
|
|
169
|
+
* Custom error message provider.
|
|
170
|
+
*/
|
|
171
|
+
errorMessage?: ValidationErrorMessageProvider<ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType>>): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
83
172
|
/**
|
|
84
173
|
* Clear minimal length of the valid array value for schema.
|
|
85
174
|
*/
|
|
86
|
-
clearMinLength(): ArraySchemaBuilder<TElementSchema, TRequired, TExplicitType
|
|
175
|
+
clearMinLength(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
87
176
|
/**
|
|
88
177
|
* Set max length of the valid array value for schema.
|
|
89
178
|
*/
|
|
90
|
-
maxLength<T extends number>(length: T
|
|
179
|
+
maxLength<T extends number>(length: T,
|
|
180
|
+
/**
|
|
181
|
+
* Custom error message provider.
|
|
182
|
+
*/
|
|
183
|
+
errorMessage?: ValidationErrorMessageProvider<ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType>>): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
91
184
|
/**
|
|
92
185
|
* Clear max length of the valid array value for schema.
|
|
93
186
|
*/
|
|
94
|
-
clearMaxLength(): ArraySchemaBuilder<TElementSchema, TRequired, TExplicitType
|
|
187
|
+
clearMaxLength(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
188
|
+
/**
|
|
189
|
+
* @hidden
|
|
190
|
+
*/
|
|
191
|
+
nullable(): ArraySchemaBuilder<TElementSchema, TRequired, true, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
192
|
+
/**
|
|
193
|
+
* @hidden
|
|
194
|
+
*/
|
|
195
|
+
notNullable(): ArraySchemaBuilder<TElementSchema, TRequired, false, TExplicitType, THasDefault, TExtensions> & TExtensions;
|
|
95
196
|
}
|
|
96
197
|
/**
|
|
97
198
|
* Creates a `Array` schema.
|
|
@@ -109,5 +210,5 @@ export declare class ArraySchemaBuilder<TElementSchema extends SchemaBuilder<any
|
|
|
109
210
|
* // undefined - invalid
|
|
110
211
|
* ```
|
|
111
212
|
*/
|
|
112
|
-
export declare const array: <TElementSchema extends SchemaBuilder<any, any>>(elementSchema?: TElementSchema) => ArraySchemaBuilder<TElementSchema, true>;
|
|
213
|
+
export declare const array: <TElementSchema extends SchemaBuilder<any, any, any, any, any>>(elementSchema?: TElementSchema) => ArraySchemaBuilder<TElementSchema, true>;
|
|
113
214
|
export {};
|