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