@cleverbrush/schema 1.1.11 → 3.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.
Files changed (98) hide show
  1. package/README.md +1721 -104
  2. package/dist/builders/AnySchemaBuilder.d.ts +54 -14
  3. package/dist/builders/AnySchemaBuilder.js +2 -112
  4. package/dist/builders/AnySchemaBuilder.js.map +1 -0
  5. package/dist/builders/ArraySchemaBuilder.d.ts +126 -23
  6. package/dist/builders/ArraySchemaBuilder.js +2 -284
  7. package/dist/builders/ArraySchemaBuilder.js.map +1 -0
  8. package/dist/builders/BooleanSchemaBuilder.d.ts +109 -19
  9. package/dist/builders/BooleanSchemaBuilder.js +2 -150
  10. package/dist/builders/BooleanSchemaBuilder.js.map +1 -0
  11. package/dist/builders/DateSchemaBuilder.d.ts +154 -34
  12. package/dist/builders/DateSchemaBuilder.js +2 -433
  13. package/dist/builders/DateSchemaBuilder.js.map +1 -0
  14. package/dist/builders/ExternSchemaBuilder.d.ts +202 -0
  15. package/dist/builders/ExternSchemaBuilder.js +2 -0
  16. package/dist/builders/ExternSchemaBuilder.js.map +1 -0
  17. package/dist/builders/FunctionSchemaBuilder.d.ts +205 -18
  18. package/dist/builders/FunctionSchemaBuilder.js +2 -113
  19. package/dist/builders/FunctionSchemaBuilder.js.map +1 -0
  20. package/dist/builders/GenericSchemaBuilder.d.ts +294 -0
  21. package/dist/builders/LazySchemaBuilder.d.ts +169 -0
  22. package/dist/builders/NullSchemaBuilder.d.ts +162 -0
  23. package/dist/builders/NumberSchemaBuilder.d.ts +159 -31
  24. package/dist/builders/NumberSchemaBuilder.js +2 -386
  25. package/dist/builders/NumberSchemaBuilder.js.map +1 -0
  26. package/dist/builders/ObjectSchemaBuilder.d.ts +486 -61
  27. package/dist/builders/ObjectSchemaBuilder.js +2 -589
  28. package/dist/builders/ObjectSchemaBuilder.js.map +1 -0
  29. package/dist/builders/ParseStringSchemaBuilder.d.ts +204 -0
  30. package/dist/builders/ParseStringSchemaBuilder.js +2 -0
  31. package/dist/builders/ParseStringSchemaBuilder.js.map +1 -0
  32. package/dist/builders/PromiseSchemaBuilder.d.ts +213 -0
  33. package/dist/builders/PromiseSchemaBuilder.js +2 -0
  34. package/dist/builders/PromiseSchemaBuilder.js.map +1 -0
  35. package/dist/builders/PropertyValidationResult.d.ts +68 -0
  36. package/dist/builders/RecordSchemaBuilder.d.ts +343 -0
  37. package/dist/builders/RecordSchemaBuilder.js +2 -0
  38. package/dist/builders/RecordSchemaBuilder.js.map +1 -0
  39. package/dist/builders/SchemaBuilder.d.ts +907 -30
  40. package/dist/builders/StringSchemaBuilder.d.ts +154 -37
  41. package/dist/builders/StringSchemaBuilder.js +2 -414
  42. package/dist/builders/StringSchemaBuilder.js.map +1 -0
  43. package/dist/builders/TupleSchemaBuilder.d.ts +250 -0
  44. package/dist/builders/TupleSchemaBuilder.js +2 -0
  45. package/dist/builders/TupleSchemaBuilder.js.map +1 -0
  46. package/dist/builders/UnionSchemaBuilder.d.ts +141 -39
  47. package/dist/builders/UnionSchemaBuilder.js +2 -216
  48. package/dist/builders/UnionSchemaBuilder.js.map +1 -0
  49. package/dist/chunk-3JMDGYDT.js +2 -0
  50. package/dist/chunk-3JMDGYDT.js.map +1 -0
  51. package/dist/chunk-BUEVZ3KA.js +2 -0
  52. package/dist/chunk-BUEVZ3KA.js.map +1 -0
  53. package/dist/chunk-CFIJQ4GP.js +2 -0
  54. package/dist/chunk-CFIJQ4GP.js.map +1 -0
  55. package/dist/chunk-DY7J6RNN.js +2 -0
  56. package/dist/chunk-DY7J6RNN.js.map +1 -0
  57. package/dist/chunk-EIVZX4ZO.js +2 -0
  58. package/dist/chunk-EIVZX4ZO.js.map +1 -0
  59. package/dist/chunk-GXPV6UQK.js +2 -0
  60. package/dist/chunk-GXPV6UQK.js.map +1 -0
  61. package/dist/chunk-HN774HD7.js +2 -0
  62. package/dist/chunk-HN774HD7.js.map +1 -0
  63. package/dist/chunk-K6Z47OQY.js +2 -0
  64. package/dist/chunk-K6Z47OQY.js.map +1 -0
  65. package/dist/chunk-NUW3VXZV.js +2 -0
  66. package/dist/chunk-NUW3VXZV.js.map +1 -0
  67. package/dist/chunk-PHE4LIAN.js +2 -0
  68. package/dist/chunk-PHE4LIAN.js.map +1 -0
  69. package/dist/chunk-QARCEYGO.js +2 -0
  70. package/dist/chunk-QARCEYGO.js.map +1 -0
  71. package/dist/chunk-WDMJBGBD.js +2 -0
  72. package/dist/chunk-WDMJBGBD.js.map +1 -0
  73. package/dist/chunk-WQDYWDOE.js +2 -0
  74. package/dist/chunk-WQDYWDOE.js.map +1 -0
  75. package/dist/chunk-YQZHDMRF.js +2 -0
  76. package/dist/chunk-YQZHDMRF.js.map +1 -0
  77. package/dist/chunk-ZC6YBKCP.js +2 -0
  78. package/dist/chunk-ZC6YBKCP.js.map +1 -0
  79. package/dist/chunk-ZFI27R3L.js +2 -0
  80. package/dist/chunk-ZFI27R3L.js.map +1 -0
  81. package/dist/core.d.ts +28 -0
  82. package/dist/core.js +2 -0
  83. package/dist/core.js.map +1 -0
  84. package/dist/extension.d.ts +421 -0
  85. package/dist/extensions/array.d.ts +112 -0
  86. package/dist/extensions/enum.d.ts +190 -0
  87. package/dist/extensions/index.d.ts +112 -0
  88. package/dist/extensions/nullable.d.ts +26 -0
  89. package/dist/extensions/number.d.ts +228 -0
  90. package/dist/extensions/string.d.ts +332 -0
  91. package/dist/extensions/util.d.ts +45 -0
  92. package/dist/index.d.ts +10 -20
  93. package/dist/index.js +2 -19
  94. package/dist/index.js.map +1 -0
  95. package/dist/utils/transaction.d.ts +27 -4
  96. package/package.json +83 -7
  97. package/dist/builders/SchemaBuilder.js +0 -275
  98. package/dist/utils/transaction.js +0 -178
@@ -1,4 +1,4 @@
1
- import { SchemaBuilder, ValidationResult, ValidationContext } from './SchemaBuilder.js';
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 = await schema.validate(123);
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
- private constructor();
25
+ static create(props: AnySchemaBuilderCreateProps<any>): AnySchemaBuilder<true, false, undefined, false, {}, any>;
26
+ protected constructor(props: AnySchemaBuilderCreateProps<TRequired>);
26
27
  /**
27
- * @hidden
28
+ * @inheritdoc
28
29
  */
29
- hasType<T>(notUsed?: T): AnySchemaBuilder<true, T>;
30
+ hasType<T>(_notUsed?: T): AnySchemaBuilder<true, TNullable, T, THasDefault, TExtensions> & TExtensions;
30
31
  /**
31
- * @hidden
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
- clearHasType(): AnySchemaBuilder<TRequired, undefined>;
44
+ protected _validate(object: TResult, context?: ValidationContext): ValidationResult<TResult>;
34
45
  /**
35
- * Performs validation of the schema over `object`. Basically runs
36
- * validators, preprocessors and checks for required (if schema is not optional).
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
- validate(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
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
- optional(): AnySchemaBuilder<false, TExplicitType>;
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 { SchemaBuilder } from './SchemaBuilder.js';
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-HN774HD7.js";import"../chunk-3JMDGYDT.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 { SchemaBuilder, ValidationResult, ValidationContext, InferType } from './SchemaBuilder.js';
2
- type ArraySchemaBuilderCreateProps<TElementSchema extends SchemaBuilder<any, any>, R extends boolean = true> = Partial<ReturnType<ArraySchemaBuilder<TElementSchema, R>['introspect']>>;
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
- private constructor();
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
- * @hidden
53
+ * @inheritdoc
30
54
  */
31
- hasType<T>(notUsed?: T): ArraySchemaBuilder<TElementSchema, true, T>;
55
+ hasType<T>(_notUsed?: T): ArraySchemaBuilder<TElementSchema, true, TNullable, T, THasDefault, TExtensions> & TExtensions;
32
56
  /**
33
- * @hidden
57
+ * @inheritdoc
34
58
  */
35
- clearHasType(): ArraySchemaBuilder<TElementSchema, TRequired, undefined>;
59
+ clearHasType(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, undefined, THasDefault, TExtensions> & TExtensions;
36
60
  /**
37
- * Performs validion of the schema over `object`. Basically runs
38
- * validators, preprocessors and checks for required (if schema is not optional).
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
- validate(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
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
- optional(): ArraySchemaBuilder<TElementSchema, false, TExplicitType>;
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,81 @@ 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
- preprocessors: readonly import("./SchemaBuilder.js").Preprocessor<TResult>[];
70
- validators: readonly import("./SchemaBuilder.js").Validator<TResult>[];
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
+ schemaName: string | undefined;
151
+ hasCatch: boolean;
152
+ catchValue: TResult | (() => TResult) | undefined;
153
+ example: unknown;
71
154
  };
72
155
  /**
73
156
  * Set a schema that every array item has to satisfy. If it is not set,
74
157
  * Item of any type is allowed.
75
158
  * @param schema Schema that every array item has to satisfy
76
159
  */
77
- of<TSchema extends SchemaBuilder<any, any>>(schema: TSchema): ArraySchemaBuilder<TSchema, TRequired, TExplicitType>;
78
- clearOf(): ArraySchemaBuilder<any, TRequired, TExplicitType>;
160
+ of<TSchema extends SchemaBuilder<any, any, any, any, any>>(schema: TSchema): ArraySchemaBuilder<TSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
161
+ /**
162
+ * Clears the element schema set by `of()`. After this call,
163
+ * array items of any type will be accepted.
164
+ */
165
+ clearOf(): ArraySchemaBuilder<any, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
79
166
  /**
80
167
  * Set minimal length of the valid array value for schema.
81
168
  */
82
- minLength<T extends number>(length: T): ArraySchemaBuilder<TElementSchema, TRequired, TExplicitType>;
169
+ minLength<T extends number>(length: T,
170
+ /**
171
+ * Custom error message provider.
172
+ */
173
+ errorMessage?: ValidationErrorMessageProvider<ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType>>): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
83
174
  /**
84
175
  * Clear minimal length of the valid array value for schema.
85
176
  */
86
- clearMinLength(): ArraySchemaBuilder<TElementSchema, TRequired, TExplicitType>;
177
+ clearMinLength(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
87
178
  /**
88
179
  * Set max length of the valid array value for schema.
89
180
  */
90
- maxLength<T extends number>(length: T): ArraySchemaBuilder<TElementSchema, TRequired, TExplicitType>;
181
+ maxLength<T extends number>(length: T,
182
+ /**
183
+ * Custom error message provider.
184
+ */
185
+ errorMessage?: ValidationErrorMessageProvider<ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType>>): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
91
186
  /**
92
187
  * Clear max length of the valid array value for schema.
93
188
  */
94
- clearMaxLength(): ArraySchemaBuilder<TElementSchema, TRequired, TExplicitType>;
189
+ clearMaxLength(): ArraySchemaBuilder<TElementSchema, TRequired, TNullable, TExplicitType, THasDefault, TExtensions> & TExtensions;
190
+ /**
191
+ * @hidden
192
+ */
193
+ nullable(): ArraySchemaBuilder<TElementSchema, TRequired, true, TExplicitType, THasDefault, TExtensions> & TExtensions;
194
+ /**
195
+ * @hidden
196
+ */
197
+ notNullable(): ArraySchemaBuilder<TElementSchema, TRequired, false, TExplicitType, THasDefault, TExtensions> & TExtensions;
95
198
  }
96
199
  /**
97
200
  * Creates a `Array` schema.
@@ -109,5 +212,5 @@ export declare class ArraySchemaBuilder<TElementSchema extends SchemaBuilder<any
109
212
  * // undefined - invalid
110
213
  * ```
111
214
  */
112
- export declare const array: <TElementSchema extends SchemaBuilder<any, any>>(elementSchema?: TElementSchema) => ArraySchemaBuilder<TElementSchema, true>;
215
+ export declare const array: <TElementSchema extends SchemaBuilder<any, any, any, any, any>>(elementSchema?: TElementSchema) => ArraySchemaBuilder<TElementSchema, true>;
113
216
  export {};