@cleverbrush/schema 1.1.10 → 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.
Files changed (87) hide show
  1. package/README.md +1314 -101
  2. package/dist/builders/AnySchemaBuilder.d.ts +55 -15
  3. package/dist/builders/AnySchemaBuilder.js +2 -112
  4. package/dist/builders/AnySchemaBuilder.js.map +1 -0
  5. package/dist/builders/ArraySchemaBuilder.d.ts +124 -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 +95 -20
  9. package/dist/builders/BooleanSchemaBuilder.js +2 -150
  10. package/dist/builders/BooleanSchemaBuilder.js.map +1 -0
  11. package/dist/builders/DateSchemaBuilder.d.ts +135 -37
  12. package/dist/builders/DateSchemaBuilder.js +2 -433
  13. package/dist/builders/DateSchemaBuilder.js.map +1 -0
  14. package/dist/builders/ExternSchemaBuilder.d.ts +200 -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 +58 -15
  18. package/dist/builders/FunctionSchemaBuilder.js +2 -113
  19. package/dist/builders/FunctionSchemaBuilder.js.map +1 -0
  20. package/dist/builders/LazySchemaBuilder.d.ts +167 -0
  21. package/dist/builders/NullSchemaBuilder.d.ts +162 -0
  22. package/dist/builders/NumberSchemaBuilder.d.ts +143 -31
  23. package/dist/builders/NumberSchemaBuilder.js +2 -386
  24. package/dist/builders/NumberSchemaBuilder.js.map +1 -0
  25. package/dist/builders/ObjectSchemaBuilder.d.ts +266 -61
  26. package/dist/builders/ObjectSchemaBuilder.js +2 -589
  27. package/dist/builders/ObjectSchemaBuilder.js.map +1 -0
  28. package/dist/builders/PropertyValidationResult.d.ts +68 -0
  29. package/dist/builders/RecordSchemaBuilder.d.ts +341 -0
  30. package/dist/builders/RecordSchemaBuilder.js +2 -0
  31. package/dist/builders/RecordSchemaBuilder.js.map +1 -0
  32. package/dist/builders/SchemaBuilder.d.ts +818 -30
  33. package/dist/builders/StringSchemaBuilder.d.ts +152 -37
  34. package/dist/builders/StringSchemaBuilder.js +2 -414
  35. package/dist/builders/StringSchemaBuilder.js.map +1 -0
  36. package/dist/builders/TupleSchemaBuilder.d.ts +248 -0
  37. package/dist/builders/TupleSchemaBuilder.js +2 -0
  38. package/dist/builders/TupleSchemaBuilder.js.map +1 -0
  39. package/dist/builders/UnionSchemaBuilder.d.ts +133 -39
  40. package/dist/builders/UnionSchemaBuilder.js +2 -216
  41. package/dist/builders/UnionSchemaBuilder.js.map +1 -0
  42. package/dist/chunk-BFCMDDTX.js +2 -0
  43. package/dist/chunk-BFCMDDTX.js.map +1 -0
  44. package/dist/chunk-CTP4RHDG.js +2 -0
  45. package/dist/chunk-CTP4RHDG.js.map +1 -0
  46. package/dist/chunk-EUQ5AE3H.js +2 -0
  47. package/dist/chunk-EUQ5AE3H.js.map +1 -0
  48. package/dist/chunk-FWUEUW2N.js +2 -0
  49. package/dist/chunk-FWUEUW2N.js.map +1 -0
  50. package/dist/chunk-IJ6FO37G.js +2 -0
  51. package/dist/chunk-IJ6FO37G.js.map +1 -0
  52. package/dist/chunk-KESLT5EE.js +2 -0
  53. package/dist/chunk-KESLT5EE.js.map +1 -0
  54. package/dist/chunk-KFTO7TMB.js +2 -0
  55. package/dist/chunk-KFTO7TMB.js.map +1 -0
  56. package/dist/chunk-MKAYFPAR.js +2 -0
  57. package/dist/chunk-MKAYFPAR.js.map +1 -0
  58. package/dist/chunk-NXPH3ZUW.js +2 -0
  59. package/dist/chunk-NXPH3ZUW.js.map +1 -0
  60. package/dist/chunk-S5TC6NSU.js +2 -0
  61. package/dist/chunk-S5TC6NSU.js.map +1 -0
  62. package/dist/chunk-YWBNVHR6.js +2 -0
  63. package/dist/chunk-YWBNVHR6.js.map +1 -0
  64. package/dist/chunk-Z7QZ7IXT.js +2 -0
  65. package/dist/chunk-Z7QZ7IXT.js.map +1 -0
  66. package/dist/chunk-ZAN4ZHCJ.js +2 -0
  67. package/dist/chunk-ZAN4ZHCJ.js.map +1 -0
  68. package/dist/chunk-ZUPYV5TI.js +2 -0
  69. package/dist/chunk-ZUPYV5TI.js.map +1 -0
  70. package/dist/core.d.ts +23 -0
  71. package/dist/core.js +2 -0
  72. package/dist/core.js.map +1 -0
  73. package/dist/extension.d.ts +413 -0
  74. package/dist/extensions/array.d.ts +112 -0
  75. package/dist/extensions/enum.d.ts +190 -0
  76. package/dist/extensions/index.d.ts +108 -0
  77. package/dist/extensions/nullable.d.ts +26 -0
  78. package/dist/extensions/number.d.ts +228 -0
  79. package/dist/extensions/string.d.ts +332 -0
  80. package/dist/extensions/util.d.ts +45 -0
  81. package/dist/index.d.ts +7 -20
  82. package/dist/index.js +2 -19
  83. package/dist/index.js.map +1 -0
  84. package/dist/utils/transaction.d.ts +27 -4
  85. package/package.json +74 -6
  86. package/dist/builders/SchemaBuilder.js +0 -275
  87. package/dist/utils/transaction.js +0 -178
@@ -1,4 +1,4 @@
1
- import { Preprocessor, SchemaBuilder, ValidationResult, ValidationContext, Validator } from './SchemaBuilder.js';
1
+ import { type BRAND, type PreprocessorEntry, SchemaBuilder, type ValidationContext, type ValidationErrorMessageProvider, type ValidationResult, type ValidatorEntry } from './SchemaBuilder.js';
2
2
  type StringSchemaBuilderCreateProps<T = string, R extends boolean = true> = Partial<ReturnType<StringSchemaBuilder<T, R>['introspect']>>;
3
3
  /**
4
4
  * Allows to define a schema for a string. It can be: required or optional,
@@ -12,165 +12,280 @@ type StringSchemaBuilderCreateProps<T = string, R extends boolean = true> = Part
12
12
  *
13
13
  * @example ```ts
14
14
  * const schema = string().equals('hello');
15
- * const result = await schema.validate('hello');
15
+ * const result = schema.validate('hello');
16
16
  * // result.valid === true
17
17
  * // result.object === 'hello'
18
18
  * ```
19
19
  *
20
20
  * @example ```ts
21
21
  * const schema = string().equals('hello');
22
- * const result = await schema.validate('world');
22
+ * const result = schema.validate('world');
23
23
  * // result.valid === false
24
24
  * // result.errors[0].message === "is expected to be equal to 'hello'"
25
25
  * ```
26
26
  *
27
27
  * @example ```ts
28
28
  * const schema = string().minLength(5);
29
- * const result = await schema.validate('hello');
29
+ * const result = schema.validate('hello');
30
30
  * // result.valid === true
31
31
  * // result.object === 'hello'
32
32
  * ```
33
33
  *
34
34
  * @example ```ts
35
35
  * const schema = string().minLength(5);
36
- * const result = await schema.validate('hi');
36
+ * const result = schema.validate('hi');
37
37
  * // result.valid === false
38
38
  * // result.errors[0].message === 'is expected to have a length of at least 5'
39
39
  * ```
40
40
  *
41
41
  * @example ```ts
42
42
  * const schema = string().minLength(2).maxLength(5);
43
- * const result = await schema.validate('yes');
43
+ * const result = schema.validate('yes');
44
44
  * // result.valid === true
45
45
  * // result.object === 'yes'
46
46
  * ```
47
47
  *
48
48
  * @example ```ts
49
49
  * const schema = string('no');
50
- * const result = await schema.validate('yes');
50
+ * const result = schema.validate('yes');
51
51
  * // result.valid === false
52
52
  * // result.errors[0].message === "is expected to be equal to 'no'"
53
53
  * ```
54
54
  *
55
55
  * @see {@link string}
56
56
  */
57
- export declare class StringSchemaBuilder<TResult = string, TRequired extends boolean = true> extends SchemaBuilder<TResult, TRequired> {
57
+ export declare class StringSchemaBuilder<TResult = string, TRequired extends boolean = true, TNullable extends boolean = false, THasDefault extends boolean = false, TExtensions = {}> extends SchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> {
58
58
  #private;
59
- static create(props: StringSchemaBuilderCreateProps): StringSchemaBuilder<string, true>;
60
- private constructor();
59
+ /**
60
+ * @hidden
61
+ */
62
+ static create(props: StringSchemaBuilderCreateProps): StringSchemaBuilder<string, true, false, false, {}>;
63
+ protected constructor(props: StringSchemaBuilderCreateProps);
61
64
  introspect(): {
62
65
  /**
63
66
  * Min length of the string (if defined).
64
67
  */
65
68
  minLength: number | undefined;
69
+ /**
70
+ * Min length validation error message provider.
71
+ * If not provided, default error message will be used.
72
+ */
73
+ minLengthValidationErrorMessageProvider: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired, false, false, {}>>;
66
74
  /**
67
75
  * Max length of the string (if defined).
68
76
  */
69
77
  maxLength: number | undefined;
78
+ /**
79
+ * Max length validation error message provider.
80
+ * If not provided, default error message will be used.
81
+ */
82
+ maxLengthValidationErrorMessageProvider: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired, false, false, {}>>;
70
83
  /**
71
84
  * If set, restrict object to be equal to a certain value.
72
85
  */
73
86
  equalsTo: string | undefined;
87
+ /**
88
+ * Equals validation error message provider.
89
+ * If not provided, default error message will be used.
90
+ */
91
+ equalsToValidationErrorMessageProvider: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired, false, false, {}>>;
74
92
  /**
75
93
  * If set, restrict string to start with a certain value.
76
94
  */
77
95
  startsWith: string | undefined;
96
+ /**
97
+ * Starts with validation error message provider.
98
+ * If not provided, default error message will be used.
99
+ */
100
+ startsWithValidationErrorMessageProvider: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired, false, false, {}>>;
78
101
  /**
79
102
  * If set, restrict string to end with a certain value.
80
103
  */
81
104
  endsWith: string | undefined;
105
+ /**
106
+ * Ends with validation error message provider.
107
+ * If not provided, default error message will be used.
108
+ */
109
+ endsWithValidationErrorMessageProvider: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired, false, false, {}>>;
82
110
  /**
83
111
  * If set, restrict string to match a certain regular expression.
84
112
  */
85
113
  matches: RegExp | undefined;
114
+ /**
115
+ * Matches validation error message provider.
116
+ * If not provided, default error message will be used.
117
+ */
118
+ matchesValidationErrorMessageProvider: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired, false, false, {}>>;
86
119
  /**
87
120
  * Array of preprocessor functions
88
121
  */
89
- preprocessors: Preprocessor<TResult>[];
122
+ preprocessors: PreprocessorEntry<TResult>[];
90
123
  /**
91
124
  * Array of validator functions
92
125
  */
93
- validators: Validator<TResult>[];
126
+ validators: ValidatorEntry<TResult>[];
94
127
  type: string;
95
128
  isRequired: boolean;
129
+ isNullable: boolean;
130
+ isReadonly: boolean;
131
+ requiredValidationErrorMessageProvider: ValidationErrorMessageProvider<SchemaBuilder<any, any, any, any, any>>;
132
+ extensions: {
133
+ [x: string]: unknown;
134
+ };
135
+ hasDefault: boolean;
136
+ defaultValue: TResult | (() => TResult) | undefined;
137
+ description: string | undefined;
138
+ hasCatch: boolean;
139
+ catchValue: TResult | (() => TResult) | undefined;
96
140
  };
97
141
  /**
98
- * @hidden
142
+ * @inheritdoc
99
143
  */
100
- hasType<T>(notUsed?: T): StringSchemaBuilder<T, true>;
144
+ hasType<T>(_notUsed?: T): StringSchemaBuilder<T, true, TNullable, THasDefault, TExtensions> & TExtensions;
101
145
  /**
102
- * @hidden
146
+ * @inheritdoc
147
+ */
148
+ clearHasType(): StringSchemaBuilder<string, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
149
+ /** {@inheritDoc SchemaBuilder.validate} */
150
+ validate(object: TResult, context?: ValidationContext): ValidationResult<TResult>;
151
+ /** {@inheritDoc SchemaBuilder.validateAsync} */
152
+ validateAsync(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
153
+ /**
154
+ * Performs synchronous validation of string schema over `object`.
155
+ * Throws if any preprocessor, validator, or error message provider returns a Promise.
156
+ * @param context Optional `ValidationContext` settings.
103
157
  */
104
- clearHasType(): StringSchemaBuilder<string, TRequired>;
158
+ protected _validate(object: TResult, context?: ValidationContext): ValidationResult<TResult>;
105
159
  /**
106
- * Performs validion of string schema over `object`.
160
+ * Performs async validation of string schema over `object`.
161
+ * Supports async preprocessors, validators, and error message providers.
107
162
  * @param context Optional `ValidationContext` settings.
108
163
  */
109
- validate(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
164
+ protected _validateAsync(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
110
165
  protected createFromProps<T, TReq extends boolean>(props: StringSchemaBuilderCreateProps<T, TReq>): this;
111
166
  /**
112
- * Restricts object to be equal to `value`.
167
+ * Restricts string to be equal to `value`.
113
168
  */
114
- equals<T extends string>(value: T): StringSchemaBuilder<T, TRequired>;
169
+ equals<T extends string>(value: T,
170
+ /**
171
+ * Custom error message provider.
172
+ */
173
+ errorMessage?: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired>>): StringSchemaBuilder<T, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
115
174
  /**
116
175
  * Cancels `equals()` call.
117
176
  */
118
- clearEquals(): StringSchemaBuilder<string, TRequired>;
177
+ clearEquals(): StringSchemaBuilder<string, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
178
+ /**
179
+ * @hidden
180
+ */
181
+ nullable(): StringSchemaBuilder<TResult, TRequired, true, THasDefault, TExtensions> & TExtensions;
119
182
  /**
120
183
  * @hidden
121
184
  */
122
- required(): StringSchemaBuilder<TResult, true>;
185
+ notNullable(): StringSchemaBuilder<TResult, TRequired, false, THasDefault, TExtensions> & TExtensions;
123
186
  /**
124
187
  * @hidden
125
188
  */
126
- optional(): StringSchemaBuilder<TResult, false>;
189
+ required(errorMessage?: ValidationErrorMessageProvider): StringSchemaBuilder<TResult, true, TNullable, THasDefault, TExtensions> & TExtensions;
190
+ /**
191
+ * @hidden
192
+ */
193
+ optional(): StringSchemaBuilder<TResult, false, TNullable, THasDefault, TExtensions> & TExtensions;
194
+ /**
195
+ * @hidden
196
+ */
197
+ default(value: TResult | (() => TResult)): StringSchemaBuilder<TResult, true, TNullable, true, TExtensions> & TExtensions;
198
+ /**
199
+ * @hidden
200
+ */
201
+ clearDefault(): StringSchemaBuilder<TResult, TRequired, TNullable, false, TExtensions> & TExtensions;
202
+ /**
203
+ * @hidden
204
+ */
205
+ brand<TBrand extends string | symbol>(_name?: TBrand): StringSchemaBuilder<TResult & {
206
+ readonly [K in BRAND]: TBrand;
207
+ }, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
208
+ /**
209
+ * Marks the inferred type as `Readonly<string>`. Since strings are
210
+ * already immutable this is an identity operation, but it sets the
211
+ * `isReadonly` introspection flag for tooling consistency.
212
+ *
213
+ * @see {@link SchemaBuilder.readonly}
214
+ */
215
+ readonly(): StringSchemaBuilder<Readonly<TResult>, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
127
216
  /**
128
217
  * Set minimal length of the valid value for schema.
129
- * @param {number} length
218
+ * @param length minimum string length
130
219
  */
131
- minLength(length: number): StringSchemaBuilder<TResult, TRequired>;
220
+ minLength(length: number,
221
+ /**
222
+ * Custom error message provider.
223
+ */
224
+ errorMessage?: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired>>): StringSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
132
225
  /**
133
226
  * Cancel `minLength()` call.
134
227
  */
135
- clearMinLength(): StringSchemaBuilder<TResult, TRequired>;
228
+ clearMinLength(): StringSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
136
229
  /**
137
230
  * Set maximal length of the valid value for schema.
138
- * @length {number} length
231
+ * @param length maximum string length
232
+ */
233
+ maxLength(length: number,
234
+ /**
235
+ * Custom error message provider.
139
236
  */
140
- maxLength(length: number): StringSchemaBuilder<TResult, TRequired>;
237
+ errorMessage?: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired>>): StringSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
141
238
  /**
142
- * cancel `maxLength()` call.
239
+ * Cancel `maxLength()` call.
143
240
  */
144
- clearMaxLength(): StringSchemaBuilder<TResult, TRequired>;
241
+ clearMaxLength(): StringSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
145
242
  /**
146
243
  * Restricts string to start with `val`.
147
244
  */
148
- startsWith(val: string): StringSchemaBuilder<TResult, TRequired>;
245
+ startsWith<T extends string>(val: T,
246
+ /**
247
+ * Custom error message provider.
248
+ */
249
+ errorMessage?: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired>>): StringSchemaBuilder<TResult extends string ? `${T}${TResult}` : TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
149
250
  /**
150
251
  * Cancels `startsWith()` call.
151
252
  */
152
- clearStartsWith(): StringSchemaBuilder<TResult, TRequired>;
253
+ clearStartsWith(): StringSchemaBuilder<string, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
153
254
  /**
154
255
  * Restricts string to end with `val`.
155
256
  */
156
- endsWith(val: string): StringSchemaBuilder<TResult, TRequired>;
257
+ endsWith<T extends string>(val: T,
258
+ /**
259
+ * Custom error message provider.
260
+ */
261
+ errorMessage?: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired>>): StringSchemaBuilder<TResult extends string ? `${TResult}${T}` : TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
157
262
  /**
158
263
  * Cancels `endsWith()` call.
159
264
  */
160
- clearEndsWith(): StringSchemaBuilder<TResult, TRequired>;
265
+ clearEndsWith(): StringSchemaBuilder<string, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
161
266
  /**
162
267
  * Restricts string to match `regexp`.
268
+ * @param regexp regular expression pattern to match against
269
+ */
270
+ matches(regexp: RegExp,
271
+ /**
272
+ * Custom error message provider.
163
273
  */
164
- matches(regexp: RegExp): StringSchemaBuilder<TResult, TRequired>;
274
+ errorMessage?: ValidationErrorMessageProvider<StringSchemaBuilder<TResult, TRequired>>): StringSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
165
275
  /**
166
276
  * Cancels `matches()` call.
167
277
  */
168
- clearMatches(): StringSchemaBuilder<TResult, TRequired>;
278
+ clearMatches(): StringSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
169
279
  }
170
280
  /**
171
281
  * Creates a string schema restricted to be equal to `equals`.
172
- * @param equals number value
282
+ * @param equals string value the schema is restricted to
173
283
  */
174
284
  export declare function string<T extends string>(equals: T): StringSchemaBuilder<T, true>;
285
+ /**
286
+ * Creates a string schema restricted to be equal to `equals` with a custom error message.
287
+ * @param equals string value the schema is restricted to
288
+ */
289
+ export declare function string<T extends string>(equals: T, errorMessage: ValidationErrorMessageProvider<StringSchemaBuilder<T, true>>): StringSchemaBuilder<T, true>;
175
290
  export declare function string(): StringSchemaBuilder<string, true>;
176
291
  export {};