@cleverbrush/schema 1.0.0-beta.4 → 1.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 (76) hide show
  1. package/README.md +118 -320
  2. package/dist/builders/AnySchemaBuilder.d.ts +76 -0
  3. package/dist/builders/AnySchemaBuilder.js +112 -0
  4. package/dist/builders/ArraySchemaBuilder.d.ts +112 -14
  5. package/dist/builders/ArraySchemaBuilder.js +254 -111
  6. package/dist/builders/BooleanSchemaBuilder.d.ts +69 -29
  7. package/dist/builders/BooleanSchemaBuilder.js +134 -74
  8. package/dist/builders/DateSchemaBuilder.d.ts +177 -0
  9. package/dist/builders/DateSchemaBuilder.js +433 -0
  10. package/dist/builders/FunctionSchemaBuilder.d.ts +59 -23
  11. package/dist/builders/FunctionSchemaBuilder.js +103 -56
  12. package/dist/builders/NumberSchemaBuilder.d.ts +159 -59
  13. package/dist/builders/NumberSchemaBuilder.js +345 -165
  14. package/dist/builders/ObjectSchemaBuilder.d.ts +357 -81
  15. package/dist/builders/ObjectSchemaBuilder.js +519 -283
  16. package/dist/builders/SchemaBuilder.d.ts +158 -34
  17. package/dist/builders/SchemaBuilder.js +258 -71
  18. package/dist/builders/StringSchemaBuilder.d.ts +138 -13
  19. package/dist/builders/StringSchemaBuilder.js +261 -115
  20. package/dist/builders/UnionSchemaBuilder.d.ts +129 -9
  21. package/dist/builders/UnionSchemaBuilder.js +196 -75
  22. package/dist/index.d.ts +20 -40
  23. package/dist/index.js +19 -32
  24. package/dist/utils/transaction.d.ts +46 -0
  25. package/dist/utils/transaction.js +178 -0
  26. package/package.json +27 -14
  27. package/dist/defaultSchemas.d.ts +0 -4
  28. package/dist/defaultSchemas.js +0 -45
  29. package/dist/schema.d.ts +0 -230
  30. package/dist/schema.js +0 -2
  31. package/dist/schemaRegistry.d.ts +0 -49
  32. package/dist/schemaRegistry.js +0 -278
  33. package/dist/validators/validateArray.d.ts +0 -3
  34. package/dist/validators/validateArray.js +0 -60
  35. package/dist/validators/validateBoolean.d.ts +0 -2
  36. package/dist/validators/validateBoolean.js +0 -30
  37. package/dist/validators/validateFunction.d.ts +0 -2
  38. package/dist/validators/validateFunction.js +0 -21
  39. package/dist/validators/validateNumber.d.ts +0 -2
  40. package/dist/validators/validateNumber.js +0 -69
  41. package/dist/validators/validateObject.d.ts +0 -3
  42. package/dist/validators/validateObject.js +0 -95
  43. package/dist/validators/validateString.d.ts +0 -2
  44. package/dist/validators/validateString.js +0 -50
  45. package/dist/validators/validateUnion.d.ts +0 -3
  46. package/dist/validators/validateUnion.js +0 -30
  47. package/src/builders/ArraySchemaBuilder.test.ts +0 -270
  48. package/src/builders/ArraySchemaBuilder.ts +0 -381
  49. package/src/builders/BooleanSchemaBuilder.test.ts +0 -196
  50. package/src/builders/BooleanSchemaBuilder.ts +0 -155
  51. package/src/builders/FunctionSchemaBuilder.test.ts +0 -134
  52. package/src/builders/FunctionSchemaBuilder.ts +0 -109
  53. package/src/builders/NumberSchemaBuilder.test.ts +0 -493
  54. package/src/builders/NumberSchemaBuilder.ts +0 -789
  55. package/src/builders/ObjectSchemaBuilder.test.ts +0 -657
  56. package/src/builders/ObjectSchemaBuilder.ts +0 -794
  57. package/src/builders/SchemaBuilder.test.ts +0 -73
  58. package/src/builders/SchemaBuilder.ts +0 -135
  59. package/src/builders/StringSchemaBuilder.test.ts +0 -318
  60. package/src/builders/StringSchemaBuilder.ts +0 -392
  61. package/src/builders/UnionSchemaBuilder.test.ts +0 -162
  62. package/src/builders/UnionSchemaBuilder.ts +0 -154
  63. package/src/defaultSchemas.ts +0 -44
  64. package/src/index.ts +0 -66
  65. package/src/schema.ts +0 -827
  66. package/src/schemaRegistry.builders.test.ts +0 -1393
  67. package/src/schemaRegistry.test.ts +0 -118
  68. package/src/schemaRegistry.ts +0 -461
  69. package/src/validators/validateArray.ts +0 -76
  70. package/src/validators/validateBoolean.ts +0 -36
  71. package/src/validators/validateFunction.ts +0 -25
  72. package/src/validators/validateNumber.ts +0 -82
  73. package/src/validators/validateObject.ts +0 -119
  74. package/src/validators/validateString.ts +0 -59
  75. package/src/validators/validateUnion.ts +0 -36
  76. package/tsconfig.json +0 -16
package/src/schema.ts DELETED
@@ -1,827 +0,0 @@
1
- import { ISchemaBuilder } from './builders/SchemaBuilder.js';
2
- import { IUnionSchemaBuilder } from './builders/UnionSchemaBuilder.js';
3
- import { IStringSchemaBuilder } from './builders/StringSchemaBuilder.js';
4
- import { IObjectSchemaBuilder } from './builders/ObjectSchemaBuilder.js';
5
- import { INumberSchemaBuilder } from './builders/NumberSchemaBuilder.js';
6
- import { IArraySchemaBuilder } from './builders/ArraySchemaBuilder.js';
7
- import { IBooleanSchemaBuilder } from './builders/BooleanSchemaBuilder.js';
8
- import { IFunctionSchemaBuilder } from './builders/FunctionSchemaBuilder.js';
9
- import { ISchemaRegistry } from './index.js';
10
-
11
- export type DefaultSchemaType =
12
- | 'alias'
13
- | 'boolean'
14
- | 'number'
15
- | 'string'
16
- | 'array'
17
- | 'object'
18
- | 'union'
19
- | 'function';
20
-
21
- export type KeysWithNoNever<T> = {
22
- [k in keyof T]: T[k] extends never ? never : k;
23
- }[keyof T];
24
-
25
- export type OmitNever<T> = {
26
- [k in KeysWithNoNever<T>]: T[k];
27
- };
28
-
29
- type MakePropOptional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
30
-
31
- export type Union<T1, T2> = {
32
- [k in keyof Omit<T1, keyof T2>]: T1[k];
33
- } & T2;
34
-
35
- export type DefaultCommonSchema = {
36
- isRequired: true;
37
- isNullable: false;
38
- };
39
-
40
- export type DefaultBooleanSchema = DefaultCommonSchema & {
41
- type: 'boolean';
42
- };
43
- export type DefaultNumberSchema = DefaultCommonSchema & {
44
- type: 'number';
45
- ensureNotNaN: true;
46
- ensureIsFinite: true;
47
- };
48
-
49
- export type DefaultStringSchema = DefaultCommonSchema & {
50
- type: 'string';
51
- };
52
-
53
- export type DefaultArraySchema = DefaultCommonSchema & {
54
- type: 'array';
55
- };
56
-
57
- export type DefaultUnionSchema = DefaultCommonSchema & {
58
- type: 'union';
59
- };
60
-
61
- export type DefaultObjectSchema = DefaultCommonSchema & {
62
- type: 'object';
63
- noUnknownProperties: true;
64
- };
65
-
66
- export type DefaultFunctionSchema = DefaultCommonSchema & {
67
- type: 'function';
68
- };
69
-
70
- export type ValidationResultRaw = {
71
- valid: boolean;
72
- errors?: Array<string>;
73
- };
74
-
75
- export type ValidationResult =
76
- | ValidationResultRaw
77
- | Promise<ValidationResultRaw>;
78
-
79
- export type ValidationResultWithObject<T> = {
80
- valid: boolean;
81
- errors?: Array<string>;
82
- object?: T;
83
- };
84
- export type Validator = (value: any) => ValidationResult;
85
-
86
- export type CommonSchemaSpecification<
87
- TRequired extends boolean = true,
88
- TNullable extends boolean = false
89
- > = {
90
- isRequired?: TRequired;
91
- isNullable?: TNullable;
92
- validators?: Array<Validator>;
93
- };
94
- export type BooleanSchema = CommonSchemaSpecification<any, any> & {
95
- type: 'boolean';
96
- equals?: boolean;
97
- };
98
-
99
- export type NumberSchema = CommonSchemaSpecification<any, any> & {
100
- type: 'number';
101
- min?: number;
102
- max?: number;
103
- equals?: number;
104
- isInteger?: boolean;
105
- ensureNotNaN?: boolean;
106
- ensureIsFinite?: boolean;
107
- };
108
-
109
- export type ArraySchema<T> = CommonSchemaSpecification<any, any> & {
110
- type: 'array';
111
- preprocessor?: ((value: unknown) => unknown | Promise<unknown>) | string;
112
- ofType?: T;
113
- minLength?: number;
114
- maxLength?: number;
115
- };
116
-
117
- export type ObjectSchema<T extends Record<string, Schema> = never> =
118
- CommonSchemaSpecification<any, any> & {
119
- type: 'object';
120
- noUnknownProperties?: boolean;
121
- properties?: T;
122
- preprocessors?: {
123
- [S in keyof T | '*']?: S extends keyof T
124
- ?
125
- | ((
126
- value: any
127
- ) =>
128
- | undefined
129
- | InferType<T[S]>
130
- | Promise<InferType<T[S]>>)
131
- | string
132
- : (value: InferType<T>) => void | Promise<void>;
133
- };
134
- };
135
-
136
- export type AliasSchema = CommonSchemaSpecification<any, any> & {
137
- type: 'alias';
138
- schemaName: string;
139
- externalRegistry?: ISchemaRegistry<any>;
140
- };
141
-
142
- export type UnionSchema<T extends any[]> = CommonSchemaSpecification<
143
- any,
144
- any
145
- > & {
146
- type: 'union';
147
- variants: T;
148
- };
149
-
150
- export type StringSchema = CommonSchemaSpecification<any, any> & {
151
- type: 'string';
152
- equals?: string;
153
- minLength?: number;
154
- maxLength?: number;
155
- };
156
-
157
- export type FunctionSchema = CommonSchemaSpecification<any, any> & {
158
- type: 'function';
159
- };
160
-
161
- export type SchemaSpecification =
162
- | ObjectSchema
163
- | BooleanSchema
164
- | NumberSchema
165
- | ArraySchema<any>
166
- | AliasSchema
167
- | UnionSchema<any>
168
- | StringSchema
169
- | FunctionSchema;
170
-
171
- export type Schema<T = any> = T extends Record<string, any>
172
- ? any
173
- : T extends number
174
- ? NumberSchema | number | 'number'
175
- : T extends string
176
- ? StringSchema | string | 'string'
177
- : T extends boolean
178
- ? BooleanSchema | boolean
179
- : number | DefaultSchemaType | SchemaSpecification | Schema[];
180
-
181
- export type MakeOptional<T> = T extends IUnionSchemaBuilder<
182
- infer TRequired,
183
- infer TNullable,
184
- infer TVariants
185
- >
186
- ? IUnionSchemaBuilder<false, TNullable, TVariants>
187
- : T extends IStringSchemaBuilder<
188
- infer TRequired,
189
- infer TNullable,
190
- infer TMinLength,
191
- infer TMaxLength,
192
- infer TEqualsTo
193
- >
194
- ? IStringSchemaBuilder<false, TNullable, TMinLength, TMaxLength, TEqualsTo>
195
- : T extends IObjectSchemaBuilder<
196
- infer TRequired,
197
- infer TNullable,
198
- infer TNoUnknownProperties,
199
- infer TProperties,
200
- infer TMapToType
201
- >
202
- ? IObjectSchemaBuilder<
203
- false,
204
- TNullable,
205
- TNoUnknownProperties,
206
- TProperties,
207
- TMapToType
208
- >
209
- : T extends INumberSchemaBuilder<
210
- infer TRequired,
211
- infer TNullable,
212
- infer TMin,
213
- infer TMax,
214
- infer TIsInteger,
215
- infer TEnsureNotNaN,
216
- infer TEnsureIsFinite,
217
- infer TEqualsTo
218
- >
219
- ? INumberSchemaBuilder<
220
- false,
221
- TNullable,
222
- TMin,
223
- TMax,
224
- TIsInteger,
225
- TEnsureNotNaN,
226
- TEnsureIsFinite,
227
- TEqualsTo
228
- >
229
- : T extends IArraySchemaBuilder<
230
- infer TRequired,
231
- infer TNullable,
232
- infer TOfType,
233
- infer TMaxLength,
234
- infer TMinLength
235
- >
236
- ? IArraySchemaBuilder<false, TNullable, TOfType, TMaxLength, TMinLength>
237
- : T extends IBooleanSchemaBuilder<
238
- infer TRequired,
239
- infer TNullable,
240
- infer TEqualsTo
241
- >
242
- ? IBooleanSchemaBuilder<false, TNullable, TEqualsTo>
243
- : T extends IFunctionSchemaBuilder<infer TRequired, infer TNullable>
244
- ? IFunctionSchemaBuilder<false, TNullable>
245
- : T & { isRequired: false };
246
-
247
- export type MakeRequired<T> = T extends IUnionSchemaBuilder<
248
- infer TRequired,
249
- infer TNullable,
250
- infer TVariants
251
- >
252
- ? IUnionSchemaBuilder<true, TNullable, TVariants>
253
- : T extends IStringSchemaBuilder<
254
- infer TRequired,
255
- infer TNullable,
256
- infer TMinLength,
257
- infer TMaxLength,
258
- infer TEqualsTo
259
- >
260
- ? IStringSchemaBuilder<true, TNullable, TMinLength, TMaxLength, TEqualsTo>
261
- : T extends IObjectSchemaBuilder<
262
- infer TRequired,
263
- infer TNullable,
264
- infer TNoUnknownProperties,
265
- infer TProperties,
266
- infer TMapToType
267
- >
268
- ? IObjectSchemaBuilder<
269
- true,
270
- TNullable,
271
- TNoUnknownProperties,
272
- TProperties,
273
- TMapToType
274
- >
275
- : T extends INumberSchemaBuilder<
276
- infer TRequired,
277
- infer TNullable,
278
- infer TMin,
279
- infer TMax,
280
- infer TIsInteger,
281
- infer TEnsureNotNaN,
282
- infer TEnsureIsFinite,
283
- infer TEqualsTo
284
- >
285
- ? INumberSchemaBuilder<
286
- true,
287
- TNullable,
288
- TMin,
289
- TMax,
290
- TIsInteger,
291
- TEnsureNotNaN,
292
- TEnsureIsFinite,
293
- TEqualsTo
294
- >
295
- : T extends IArraySchemaBuilder<
296
- infer TRequired,
297
- infer TNullable,
298
- infer TOfType,
299
- infer TMaxLength,
300
- infer TMinLength
301
- >
302
- ? IArraySchemaBuilder<true, TNullable, TOfType, TMaxLength, TMinLength>
303
- : T extends IBooleanSchemaBuilder<
304
- infer TRequired,
305
- infer TNullable,
306
- infer TEqualsTo
307
- >
308
- ? IBooleanSchemaBuilder<true, TNullable, TEqualsTo>
309
- : T extends IFunctionSchemaBuilder<infer TRequired, infer TNullable>
310
- ? IFunctionSchemaBuilder<true, TNullable>
311
- : T & { isRequired: true };
312
-
313
- export type MakeNullable<T> = T extends IUnionSchemaBuilder<
314
- infer TRequired,
315
- infer TNullable,
316
- infer TVariants
317
- >
318
- ? IUnionSchemaBuilder<TRequired, true, TVariants>
319
- : T extends IStringSchemaBuilder<
320
- infer TRequired,
321
- infer TNullable,
322
- infer TMinLength,
323
- infer TMaxLength,
324
- infer TEqualsTo
325
- >
326
- ? IStringSchemaBuilder<TRequired, true, TMinLength, TMaxLength, TEqualsTo>
327
- : T extends IObjectSchemaBuilder<
328
- infer TRequired,
329
- infer TNullable,
330
- infer TNoUnknownProperties,
331
- infer TProperties,
332
- infer TMapToType
333
- >
334
- ? IObjectSchemaBuilder<
335
- TRequired,
336
- true,
337
- TNoUnknownProperties,
338
- TProperties,
339
- TMapToType
340
- >
341
- : T extends INumberSchemaBuilder<
342
- infer TRequired,
343
- infer TNullable,
344
- infer TMin,
345
- infer TMax,
346
- infer TIsInteger,
347
- infer TEnsureNotNaN,
348
- infer TEnsureIsFinite,
349
- infer TEqualsTo
350
- >
351
- ? INumberSchemaBuilder<
352
- TRequired,
353
- true,
354
- TMin,
355
- TMax,
356
- TIsInteger,
357
- TEnsureNotNaN,
358
- TEnsureIsFinite,
359
- TEqualsTo
360
- >
361
- : T extends IArraySchemaBuilder<
362
- infer TRequired,
363
- infer TNullable,
364
- infer TOfType,
365
- infer TMaxLength,
366
- infer TMinLength
367
- >
368
- ? IArraySchemaBuilder<TRequired, true, TOfType, TMaxLength, TMinLength>
369
- : T extends IBooleanSchemaBuilder<
370
- infer TRequired,
371
- infer TNullable,
372
- infer TEqualsTo
373
- >
374
- ? IBooleanSchemaBuilder<TRequired, true, TEqualsTo>
375
- : T extends IFunctionSchemaBuilder<infer TRequired, infer TNullable>
376
- ? IFunctionSchemaBuilder<TRequired, true>
377
- : T & { isNullable: true };
378
-
379
- export type MakeNotNullable<T> = T extends IUnionSchemaBuilder<
380
- infer TRequired,
381
- infer TNullable,
382
- infer TVariants
383
- >
384
- ? IUnionSchemaBuilder<TRequired, false, TVariants>
385
- : T extends IStringSchemaBuilder<
386
- infer TRequired,
387
- infer TNullable,
388
- infer TMinLength,
389
- infer TMaxLength,
390
- infer TEqualsTo
391
- >
392
- ? IStringSchemaBuilder<TRequired, false, TMinLength, TMaxLength, TEqualsTo>
393
- : T extends IObjectSchemaBuilder<
394
- infer TRequired,
395
- infer TNullable,
396
- infer TNoUnknownProperties,
397
- infer TProperties,
398
- infer TMapToType
399
- >
400
- ? IObjectSchemaBuilder<
401
- TRequired,
402
- false,
403
- TNoUnknownProperties,
404
- TProperties,
405
- TMapToType
406
- >
407
- : T extends INumberSchemaBuilder<
408
- infer TRequired,
409
- infer TNullable,
410
- infer TMin,
411
- infer TMax,
412
- infer TIsInteger,
413
- infer TEnsureNotNaN,
414
- infer TEnsureIsFinite,
415
- infer TEqualsTo
416
- >
417
- ? INumberSchemaBuilder<
418
- TRequired,
419
- false,
420
- TMin,
421
- TMax,
422
- TIsInteger,
423
- TEnsureNotNaN,
424
- TEnsureIsFinite,
425
- TEqualsTo
426
- >
427
- : T extends IArraySchemaBuilder<
428
- infer TRequired,
429
- infer TNullable,
430
- infer TOfType,
431
- infer TMaxLength,
432
- infer TMinLength
433
- >
434
- ? IArraySchemaBuilder<TRequired, false, TOfType, TMaxLength, TMinLength>
435
- : T extends IBooleanSchemaBuilder<
436
- infer TRequired,
437
- infer TNullable,
438
- infer TEqualsTo
439
- >
440
- ? IBooleanSchemaBuilder<TRequired, false, TEqualsTo>
441
- : T extends IFunctionSchemaBuilder<infer TRequired, infer TNullable>
442
- ? IFunctionSchemaBuilder<TRequired, false>
443
- : T & { isNullable: false };
444
-
445
- export type ExpandUnionVariants<TVariants extends any[]> = TVariants extends [
446
- infer T
447
- ]
448
- ? [ExpandSchemaBuilder<T>]
449
- : TVariants extends [infer T, ...infer Rest]
450
- ? [ExpandSchemaBuilder<T>, ...ExpandUnionVariants<[...Rest]>]
451
- : never;
452
-
453
- export type ExpandSchemaBuilder<TSchema> = TSchema extends [
454
- infer TType,
455
- ...infer TParams
456
- ]
457
- ? TType extends 'object'
458
- ? TParams extends [
459
- infer TRequired extends boolean,
460
- infer TNullable extends boolean,
461
- infer TNoUnknownProperties extends boolean | undefined,
462
- infer TProperties,
463
- infer TMapToType
464
- ]
465
- ? IObjectSchemaBuilder<
466
- TRequired,
467
- TNullable,
468
- TNoUnknownProperties,
469
- {
470
- [k in keyof TProperties]: ExpandSchemaBuilder<
471
- TProperties[k]
472
- >;
473
- },
474
- TMapToType
475
- >
476
- : IObjectSchemaBuilder
477
- : TType extends 'string'
478
- ? TParams extends [
479
- infer TRequired extends boolean,
480
- infer TNullable extends boolean,
481
- infer TMinLength extends number | undefined,
482
- infer TMaxLength extends number | undefined,
483
- infer TEqualsTo extends string | undefined
484
- ]
485
- ? TEqualsTo extends undefined
486
- ? IStringSchemaBuilder<
487
- TRequired,
488
- TNullable,
489
- TMinLength,
490
- TMaxLength,
491
- undefined
492
- >
493
- : IStringSchemaBuilder<
494
- TRequired,
495
- TNullable,
496
- TMinLength,
497
- TMaxLength,
498
- TEqualsTo
499
- >
500
- : IStringSchemaBuilder
501
- : TType extends 'number'
502
- ? TParams extends [
503
- infer TRequired extends boolean,
504
- infer TNullable extends boolean,
505
- infer TMin extends number | undefined,
506
- infer TMax extends number | undefined,
507
- infer TIsInteger extends boolean | undefined,
508
- infer TEnsureNotNaN extends boolean | undefined,
509
- infer TEnsureIsFinite extends boolean | undefined,
510
- infer TEqualsTo extends number | undefined
511
- ]
512
- ? TEqualsTo extends undefined
513
- ? INumberSchemaBuilder<
514
- TRequired,
515
- TNullable,
516
- TMin,
517
- TMax,
518
- TIsInteger,
519
- TEnsureNotNaN,
520
- TEnsureIsFinite,
521
- TEqualsTo
522
- >
523
- : INumberSchemaBuilder<
524
- TRequired,
525
- TNullable,
526
- TMin,
527
- TMax,
528
- TIsInteger,
529
- TEnsureNotNaN,
530
- TEnsureIsFinite,
531
- undefined
532
- >
533
- : INumberSchemaBuilder
534
- : TType extends 'array'
535
- ? TParams extends [
536
- infer TRequired extends boolean,
537
- infer TNullable extends boolean,
538
- infer TOfType,
539
- infer TMaxLength extends number | undefined,
540
- infer TMinLength extends number | undefined
541
- ]
542
- ? IArraySchemaBuilder<
543
- TRequired,
544
- TNullable,
545
- ExpandSchemaBuilder<TOfType>,
546
- TMaxLength,
547
- TMinLength
548
- >
549
- : IArraySchemaBuilder
550
- : TType extends 'union'
551
- ? TParams extends [
552
- infer TRequired extends boolean,
553
- infer TNullable extends boolean,
554
- infer TVariants extends any[]
555
- ]
556
- ? IUnionSchemaBuilder<
557
- TRequired,
558
- TNullable,
559
- ExpandUnionVariants<TVariants>
560
- >
561
- : IUnionSchemaBuilder
562
- : TType extends 'boolean'
563
- ? TParams extends [
564
- infer TRequired extends boolean,
565
- infer TNullable extends boolean,
566
- infer TEqualsTo extends boolean | undefined
567
- ]
568
- ? IBooleanSchemaBuilder<
569
- TRequired,
570
- TNullable,
571
- TEqualsTo extends undefined ? undefined : boolean
572
- >
573
- : IBooleanSchemaBuilder
574
- : TType extends 'function'
575
- ? TParams extends [
576
- infer TRequired extends boolean,
577
- infer TNullable extends boolean
578
- ]
579
- ? IFunctionSchemaBuilder<TRequired, TNullable>
580
- : IFunctionSchemaBuilder
581
- : TSchema
582
- : TSchema;
583
-
584
- export type ReduceSchemaBuilder<TBuilder> =
585
- TBuilder extends IObjectSchemaBuilder<
586
- infer TRequired,
587
- infer TNullable,
588
- infer TNoUnknownProperties,
589
- infer TProperties,
590
- infer TMapToType
591
- >
592
- ? [
593
- 'object',
594
- TRequired,
595
- TNullable,
596
- TNoUnknownProperties,
597
- {
598
- [k in keyof TProperties]: ReduceSchemaBuilder<TProperties[k]>;
599
- },
600
- TMapToType
601
- ]
602
- : TBuilder extends IStringSchemaBuilder<
603
- infer TRequired,
604
- infer TNullable,
605
- infer TMinLength,
606
- infer TMaxLength,
607
- infer TEqualsTo
608
- >
609
- ? ['string', TRequired, TNullable, TMinLength, TMaxLength, TEqualsTo]
610
- : TBuilder extends INumberSchemaBuilder<
611
- infer TRequired,
612
- infer TNullable,
613
- infer TMin,
614
- infer TMax,
615
- infer TIsInteger,
616
- infer TEnsureNotNaN,
617
- infer TEnsureIsFinite,
618
- infer TEqualsTo
619
- >
620
- ? [
621
- 'number',
622
- TRequired,
623
- TNullable,
624
- TMin,
625
- TMax,
626
- TIsInteger,
627
- TEnsureNotNaN,
628
- TEnsureIsFinite,
629
- TEqualsTo
630
- ]
631
- : TBuilder extends IArraySchemaBuilder<
632
- infer TRequired,
633
- infer TNullable,
634
- infer TOfType,
635
- infer TMaxLength,
636
- infer TMinLength
637
- >
638
- ? [
639
- 'array',
640
- TRequired,
641
- TNullable,
642
- ReduceSchemaBuilder<TOfType>,
643
- TMaxLength,
644
- TMinLength
645
- ]
646
- : TBuilder extends IUnionSchemaBuilder<
647
- infer TRequired,
648
- infer TNullable,
649
- infer TVariants
650
- >
651
- ? ['union', TRequired, TNullable, ReduceSchemaBuilder<TVariants>]
652
- : TBuilder extends IBooleanSchemaBuilder<
653
- infer TRequired,
654
- infer TNullable,
655
- infer TEqualsTo
656
- >
657
- ? ['boolean', TRequired, TNullable, TEqualsTo]
658
- : TBuilder extends IFunctionSchemaBuilder<
659
- infer TRequired,
660
- infer TNullable
661
- >
662
- ? ['function', TRequired, TNullable]
663
- : TBuilder extends [infer F]
664
- ? [ReduceSchemaBuilder<F>]
665
- : TBuilder extends [infer F, ...infer Rest]
666
- ? [ReduceSchemaBuilder<F>, ...ReduceSchemaBuilder<Rest>]
667
- : TBuilder;
668
-
669
- export type InferType<S> = S extends DefaultSchemaType
670
- ? S extends 'string'
671
- ? string
672
- : S extends 'boolean'
673
- ? boolean
674
- : S extends 'number'
675
- ? number
676
- : S extends 'array'
677
- ? Array<any>
678
- : S extends 'object'
679
- ? Record<string, never>
680
- : S extends 'function'
681
- ? Function
682
- : never
683
- : S extends number
684
- ? S
685
- : S extends BooleanSchema
686
- ? S['equals'] extends undefined
687
- ? boolean
688
- : S['equals']
689
- : S extends UnionSchema<infer K>
690
- ? InferType<K>
691
- : S extends { type: 'union'; variants: infer K }
692
- ? K extends any[]
693
- ? InferType<K>
694
- : any
695
- : S extends IObjectSchemaBuilder<
696
- infer TRequired,
697
- infer TNullable,
698
- infer TNoUnknownProperties,
699
- infer TProperties,
700
- infer TMapToType
701
- >
702
- ? TMapToType extends undefined
703
- ? InferType<
704
- CommonSchemaSpecification<TRequired, TNullable> & {
705
- type: 'object';
706
- } & (TNoUnknownProperties extends true
707
- ? { noUnknownProperties: true }
708
- : { noUnknownProperties: false }) &
709
- (TProperties extends Record<string, any>
710
- ? {
711
- properties: TProperties;
712
- }
713
- : {})
714
- >
715
- : TMapToType
716
- : S extends INumberSchemaBuilder<
717
- infer TRequired,
718
- infer TNullable,
719
- infer TMin,
720
- infer TMax,
721
- infer TIsInteger,
722
- infer TEnsureNotNaN,
723
- infer TEnsureIsFinite,
724
- infer TEqualsTo
725
- >
726
- ? TRequired extends true
727
- ? TEqualsTo extends undefined
728
- ? number
729
- : TEqualsTo
730
- : TEqualsTo extends undefined
731
- ? number | undefined
732
- : TEqualsTo | undefined
733
- : S extends IBooleanSchemaBuilder<
734
- infer TRequired,
735
- infer TNullable,
736
- infer TEqualsTo
737
- >
738
- ? TRequired extends true
739
- ? TEqualsTo extends undefined
740
- ? boolean
741
- : TEqualsTo
742
- : TEqualsTo extends undefined
743
- ? boolean | undefined
744
- : TEqualsTo | undefined
745
- : S extends IStringSchemaBuilder<
746
- infer TRequired,
747
- infer TNullable,
748
- infer TMinLength,
749
- infer TMaxLength,
750
- infer TEqualsTo
751
- >
752
- ? TRequired extends true
753
- ? TEqualsTo extends undefined
754
- ? string
755
- : TEqualsTo
756
- : TEqualsTo extends undefined
757
- ? string | undefined
758
- : TEqualsTo | undefined
759
- : S extends IUnionSchemaBuilder<
760
- infer TRequired,
761
- infer TNullable,
762
- infer TVariants
763
- >
764
- ? TRequired extends true
765
- ? InferType<TVariants>
766
- : InferType<TVariants> | undefined
767
- : S extends IArraySchemaBuilder<
768
- infer TRequired,
769
- infer TNullable,
770
- infer TOfType,
771
- infer TMaxLength,
772
- infer TMinLength
773
- >
774
- ? TRequired extends true
775
- ? TOfType extends undefined
776
- ? any[]
777
- : InferType<TOfType>[]
778
- : TOfType extends undefined
779
- ? any[] | undefined
780
- : InferType<TOfType>[] | undefined
781
- : S extends IFunctionSchemaBuilder<infer TRequired, infer TNullable>
782
- ? TRequired extends true
783
- ? Function
784
- : Function | undefined
785
- : S extends StringSchema
786
- ? S['equals'] extends undefined
787
- ? string
788
- : S['equals']
789
- : S extends NumberSchema
790
- ? S['equals'] extends undefined
791
- ? number
792
- : S['equals']
793
- : S extends ObjectSchema<infer K>
794
- ? OptionalPropertiesOf<K> extends never
795
- ? { [k in keyof K]: InferType<K[k]> }
796
- : MakePropOptional<
797
- { [k in keyof K]: InferType<K[k]> },
798
- OptionalPropertiesOf<K>
799
- >
800
- : S extends { type: 'object'; properties: infer K }
801
- ? OptionalPropertiesOf<K> extends never
802
- ? { [k in keyof K]: InferType<K[k]> }
803
- : MakePropOptional<
804
- { [k in keyof K]: InferType<K[k]> },
805
- OptionalPropertiesOf<K>
806
- >
807
- : S extends [infer F]
808
- ? InferType<F>
809
- : S extends [infer F, ...infer Rest]
810
- ? InferType<F> | InferType<Rest>
811
- : S extends ArraySchema<infer L>
812
- ? InferType<L> extends never
813
- ? Array<any>
814
- : InferType<L>[]
815
- : S extends { type: 'array'; ofType: infer L }
816
- ? InferType<L>[]
817
- : S extends { type: 'array' }
818
- ? Array<any>
819
- : any;
820
-
821
- type OptionalPropertiesOf<T> = {
822
- [k in keyof T]: T[k] extends ISchemaBuilder<infer TRequired, any>
823
- ? TRequired extends false
824
- ? k
825
- : never
826
- : never;
827
- }[keyof T];