@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.
Files changed (87) hide show
  1. package/README.md +1314 -101
  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 +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 +94 -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 +134 -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 +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 +57 -14
  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,5 +1,5 @@
1
- import { Preprocessor, SchemaBuilder, ValidationResult, ValidationContext, Validator } from './SchemaBuilder.js';
2
- type DateSchemaBuilderCreateProps<T = Date, R extends boolean = true> = Partial<ReturnType<DateSchemaBuilder<T, R>['introspect']>>;
1
+ import { type BRAND, type PreprocessorEntry, SchemaBuilder, type ValidationContext, type ValidationErrorMessageProvider, type ValidationResult, type ValidatorEntry } from './SchemaBuilder.js';
2
+ type DateSchemaBuilderCreateProps<T = Date, R extends boolean = true> = Partial<ReturnType<DateSchemaBuilder<T, R, any>['introspect']>>;
3
3
  /**
4
4
  * Allows to create Date schema. It can be required or optional.
5
5
  * It can be restricted to be: equal to a certain value, in future, in past, in a certain range.
@@ -12,59 +12,87 @@ type DateSchemaBuilderCreateProps<T = Date, R extends boolean = true> = Partial<
12
12
  * @example ```ts
13
13
  * const date = new Date(2020, 0, 2);
14
14
  * const schema = date().min(new Date(2020, 0, 1));
15
- * const result = await schema.validate(date);
15
+ * const result = schema.validate(date);
16
16
  * // result.valid === true
17
17
  * // result.object === date
18
18
  * ```
19
19
  *
20
20
  * @example ```ts
21
21
  * const schema = date();
22
- * const result = await schema.validate('2020-01-01');
22
+ * const result = schema.validate('2020-01-01');
23
23
  * // result.valid === false
24
24
  * // result.errors[0].message === 'is expected to be a date'
25
25
  * ```
26
26
  *
27
27
  * @example ```ts
28
28
  * const schema = date().parseFromJson();
29
- * const result = await schema.validate('2020-01-01T00:00:00.000Z');
29
+ * const result = schema.validate('2020-01-01T00:00:00.000Z');
30
30
  * // result.valid === true
31
31
  * // result.object is equal to corresponding Date object
32
32
  * ```
33
33
  *
34
34
  * @example ```ts
35
35
  * const schema = date().parseFromEpoch();
36
- * const result = await schema.validate(1577836800000);
36
+ * const result = schema.validate(1577836800000);
37
37
  * // result.valid === true
38
38
  * // result.object is equal to corresponding Date object
39
39
  * ```
40
40
  *
41
41
  * @see {@link date}
42
42
  */
43
- export declare class DateSchemaBuilder<TResult = Date, TRequired extends boolean = true> extends SchemaBuilder<TResult, TRequired> {
43
+ export declare class DateSchemaBuilder<TResult = Date, TRequired extends boolean = true, TNullable extends boolean = false, THasDefault extends boolean = false, TExtensions = {}> extends SchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> {
44
44
  #private;
45
- static create(props: DateSchemaBuilderCreateProps): DateSchemaBuilder<Date, true>;
46
- private constructor();
45
+ /**
46
+ * @hidden
47
+ */
48
+ static create(props: DateSchemaBuilderCreateProps): DateSchemaBuilder<Date, true, false, false, {}>;
49
+ protected constructor(props: DateSchemaBuilderCreateProps);
47
50
  introspect(): {
48
51
  /**
49
52
  * Min valid value (if defined).
50
53
  */
51
54
  min: Date | undefined;
55
+ /**
56
+ * Min value validation error message provider.
57
+ * If not provided, default error message will be used.
58
+ */
59
+ minValidationErrorMessageProvider: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired, false, false, {}>>;
52
60
  /**
53
61
  * Max valid value (if defined).
54
62
  */
55
63
  max: Date | undefined;
64
+ /**
65
+ * Max value validation error message provider.
66
+ * If not provided, default error message will be used.
67
+ */
68
+ maxValidationErrorMessageProvider: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired, false, false, {}>>;
56
69
  /**
57
70
  * Make sure that date is in future. `false` by default.
58
71
  */
59
72
  ensureIsInFuture: boolean;
73
+ /**
74
+ * Ensure in future validation error message provider.
75
+ * If not provided, default error message will be used.
76
+ */
77
+ ensureIsInFutureValidationErrorMessageProvider: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired, false, false, {}>>;
60
78
  /**
61
79
  * Make sure that date is in past. `false` by default.
62
80
  */
63
81
  ensureIsInPast: boolean;
82
+ /**
83
+ * Ensure in past validation error message provider.
84
+ * If not provided, default error message will be used.
85
+ */
86
+ ensureIsInPastValidationErrorMessageProvider: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired, false, false, {}>>;
64
87
  /**
65
88
  * If set, restrict date to be equal to a certain value.
66
89
  */
67
90
  equalsTo: Date | undefined;
91
+ /**
92
+ * Equals to validation error message provider.
93
+ * If not provided, default error message will be used.
94
+ */
95
+ equalsToValidationErrorMessageProvider: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired, false, false, {}>>;
68
96
  /**
69
97
  * If set, schema will try to parse date from the UNIX epoch (number).
70
98
  * `false` by default.
@@ -78,27 +106,49 @@ export declare class DateSchemaBuilder<TResult = Date, TRequired extends boolean
78
106
  /**
79
107
  * Array of preprocessor functions
80
108
  */
81
- preprocessors: Preprocessor<TResult>[];
109
+ preprocessors: PreprocessorEntry<TResult>[];
82
110
  /**
83
111
  * Array of validator functions
84
112
  */
85
- validators: Validator<TResult>[];
113
+ validators: ValidatorEntry<TResult>[];
86
114
  type: string;
87
115
  isRequired: boolean;
116
+ isNullable: boolean;
117
+ isReadonly: boolean;
118
+ requiredValidationErrorMessageProvider: ValidationErrorMessageProvider<SchemaBuilder<any, any, any, any, any>>;
119
+ extensions: {
120
+ [x: string]: unknown;
121
+ };
122
+ hasDefault: boolean;
123
+ defaultValue: TResult | (() => TResult) | undefined;
124
+ description: string | undefined;
125
+ hasCatch: boolean;
126
+ catchValue: TResult | (() => TResult) | undefined;
88
127
  };
89
128
  /**
90
- * @hidden
129
+ * @inheritdoc
91
130
  */
92
- hasType<T>(notUsed?: T): DateSchemaBuilder<T, true>;
131
+ hasType<T>(_notUsed?: T): DateSchemaBuilder<T, true, TNullable, THasDefault, TExtensions> & TExtensions;
93
132
  /**
94
- * @hidden
133
+ * @inheritdoc
134
+ */
135
+ clearHasType(): DateSchemaBuilder<Date, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
136
+ /** {@inheritDoc SchemaBuilder.validate} */
137
+ validate(object: TResult, context?: ValidationContext): ValidationResult<TResult>;
138
+ /** {@inheritDoc SchemaBuilder.validateAsync} */
139
+ validateAsync(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
140
+ /**
141
+ * Performs synchronous validation of Date schema over `object`.
142
+ * Throws if any preprocessor, validator, or error message provider returns a Promise.
143
+ * @param context Optional `ValidationContext` settings.
95
144
  */
96
- clearHasType(): DateSchemaBuilder<Date, TRequired>;
145
+ protected _validate(object: TResult, context?: ValidationContext): ValidationResult<TResult>;
97
146
  /**
98
- * Performs validion of Date schema over `object`.
147
+ * Performs async validation of Date schema over `object`.
148
+ * Supports async preprocessors, validators, and error message providers.
99
149
  * @param context Optional `ValidationContext` settings.
100
150
  */
101
- validate(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
151
+ protected _validateAsync(object: TResult, context?: ValidationContext): Promise<ValidationResult<TResult>>;
102
152
  /**
103
153
  * @hidden
104
154
  */
@@ -106,72 +156,122 @@ export declare class DateSchemaBuilder<TResult = Date, TRequired extends boolean
106
156
  /**
107
157
  * Restricts Date to be equal to `value`.
108
158
  */
109
- equals<T extends Date>(value: T): DateSchemaBuilder<T, TRequired>;
159
+ equals<T extends Date>(value: T,
160
+ /**
161
+ * Custom error message provider.
162
+ */
163
+ errorMessage?: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired>>): DateSchemaBuilder<T, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
110
164
  /**
111
165
  * Clears `equals()` call.
112
166
  */
113
- clearEquals(): DateSchemaBuilder<Date, TRequired>;
167
+ clearEquals(): DateSchemaBuilder<Date, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
168
+ /**
169
+ * @hidden
170
+ */
171
+ required(errorMessage?: ValidationErrorMessageProvider): DateSchemaBuilder<TResult, true, TNullable, THasDefault, TExtensions> & TExtensions;
114
172
  /**
115
173
  * @hidden
116
174
  */
117
- required(): DateSchemaBuilder<TResult, true>;
175
+ optional(): DateSchemaBuilder<TResult, false, TNullable, THasDefault, TExtensions> & TExtensions;
118
176
  /**
119
177
  * @hidden
120
178
  */
121
- optional(): DateSchemaBuilder<TResult, false>;
179
+ default(value: TResult | (() => TResult)): DateSchemaBuilder<TResult, true, TNullable, true, TExtensions> & TExtensions;
180
+ /**
181
+ * @hidden
182
+ */
183
+ clearDefault(): DateSchemaBuilder<TResult, TRequired, TNullable, false, TExtensions> & TExtensions;
184
+ /**
185
+ * @hidden
186
+ */
187
+ brand<TBrand extends string | symbol>(_name?: TBrand): DateSchemaBuilder<TResult & {
188
+ readonly [K in BRAND]: TBrand;
189
+ }, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
190
+ /**
191
+ * Marks the inferred type as `Readonly<Date>` — prevents mutation of
192
+ * Date methods like `setFullYear()` at the type level. Validation
193
+ * behaviour is unchanged.
194
+ *
195
+ * @see {@link SchemaBuilder.readonly}
196
+ */
197
+ readonly(): DateSchemaBuilder<Readonly<TResult>, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
122
198
  /**
123
199
  * Accept only dates in the future.
124
200
  */
125
- isInFuture(): DateSchemaBuilder<TResult, TRequired>;
201
+ isInFuture(
202
+ /**
203
+ * Custom error message provider.
204
+ */
205
+ errorMessage?: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired>>): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
126
206
  /**
127
207
  * Cancel `isInFuture()` call.
128
208
  */
129
- clearIsInFuture(): DateSchemaBuilder<TResult, TRequired>;
209
+ clearIsInFuture(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
130
210
  /**
131
211
  * Accept only dates in the past.
132
212
  */
133
- isInPast(): DateSchemaBuilder<TResult, TRequired>;
213
+ isInPast(
214
+ /**
215
+ * Custom error message provider.
216
+ */
217
+ errorMessage?: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired>>): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
134
218
  /**
135
219
  * Cancel `isInPast()` call.
136
220
  */
137
- clearIsInPast(): DateSchemaBuilder<TResult, TRequired>;
221
+ clearIsInPast(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
138
222
  /**
139
223
  * Set minimal valid Date value for schema.
140
224
  */
141
- min(minValue: Date): DateSchemaBuilder<TResult, TRequired>;
225
+ min(minValue: Date,
226
+ /**
227
+ * Custom error message provider.
228
+ */
229
+ errorMessage?: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired>>): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
142
230
  /**
143
231
  * Clear `min()` call.
144
232
  */
145
- clearMin(): DateSchemaBuilder<TResult, TRequired>;
233
+ clearMin(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
146
234
  /**
147
235
  * Set maximal valid Date value for schema.
148
236
  */
149
- max(maxValue: Date): DateSchemaBuilder<TResult, TRequired>;
237
+ max(maxValue: Date,
238
+ /**
239
+ * Custom error message provider.
240
+ */
241
+ errorMessage?: ValidationErrorMessageProvider<DateSchemaBuilder<TResult, TRequired>>): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
150
242
  /**
151
243
  * Clear `max()` call.
152
244
  */
153
- clearMax(): DateSchemaBuilder<TResult, TRequired>;
245
+ clearMax(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
154
246
  /**
155
247
  * Accepts JSON string as a valid Date.
156
248
  * String must be in ISO format and will be parsed using `JSON.parse()`.
157
249
  */
158
- acceptJsonString(): DateSchemaBuilder<TResult, TRequired>;
250
+ acceptJsonString(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
159
251
  /**
160
252
  * Cancel `acceptJsonString()` call.
161
253
  */
162
- doNotAcceptJsonString(): DateSchemaBuilder<TResult, TRequired>;
254
+ doNotAcceptJsonString(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
163
255
  /**
164
256
  * Accepts epoch number as a valid Date.
165
257
  * Epoch number will be parsed using `new Date(epoch)`.
166
258
  */
167
- acceptEpoch(): DateSchemaBuilder<TResult, TRequired>;
259
+ acceptEpoch(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
168
260
  /**
169
261
  * Cancel `acceptEpoch()` call.
170
262
  */
171
- doNotAcceptEpoch(): DateSchemaBuilder<TResult, TRequired>;
263
+ doNotAcceptEpoch(): DateSchemaBuilder<TResult, TRequired, TNullable, THasDefault, TExtensions> & TExtensions;
264
+ /**
265
+ * @hidden
266
+ */
267
+ nullable(): DateSchemaBuilder<TResult, TRequired, true, THasDefault, TExtensions> & TExtensions;
268
+ /**
269
+ * @hidden
270
+ */
271
+ notNullable(): DateSchemaBuilder<TResult, TRequired, false, THasDefault, TExtensions> & TExtensions;
172
272
  }
173
273
  /**
174
274
  * Creates a Date schema.
175
275
  */
176
- export declare const date: () => DateSchemaBuilder<Date, true>;
276
+ export declare const date: () => DateSchemaBuilder<Date, true, false, false, {}>;
177
277
  export {};