@based/schema 0.0.10 → 0.0.11

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 (90) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/set/collections.js +39 -17
  5. package/dist/set/collections.js.map +1 -1
  6. package/dist/set/error.d.ts +4 -2
  7. package/dist/set/error.js +9 -3
  8. package/dist/set/error.js.map +1 -1
  9. package/dist/set/index.d.ts +2 -2
  10. package/dist/set/index.js +48 -8
  11. package/dist/set/index.js.map +1 -1
  12. package/dist/set/number.js +37 -23
  13. package/dist/set/number.js.map +1 -1
  14. package/dist/set/parseDefaultAndValue.js +5 -3
  15. package/dist/set/parseDefaultAndValue.js.map +1 -1
  16. package/dist/set/references.js +12 -5
  17. package/dist/set/references.js.map +1 -1
  18. package/dist/set/rest.js +4 -4
  19. package/dist/set/rest.js.map +1 -1
  20. package/dist/set/string.js +38 -34
  21. package/dist/set/string.js.map +1 -1
  22. package/dist/set2/index.js +1 -0
  23. package/dist/set2/index.js.map +1 -0
  24. package/dist/types.d.ts +8 -2
  25. package/dist/types.js.map +1 -1
  26. package/dist/walker.d.ts +50 -0
  27. package/dist/walker.js +83 -0
  28. package/dist/walker.js.map +1 -0
  29. package/package.json +1 -1
  30. package/src/index.ts +2 -0
  31. package/src/set/collections.ts +42 -17
  32. package/src/set/error.ts +13 -3
  33. package/src/set/index.ts +65 -8
  34. package/src/set/number.ts +39 -22
  35. package/src/set/parseDefaultAndValue.ts +13 -3
  36. package/src/set/references.ts +11 -5
  37. package/src/set/rest.ts +4 -4
  38. package/src/set/string.ts +48 -36
  39. package/src/set2/index.ts +0 -0
  40. package/src/types.ts +16 -7
  41. package/src/walker.ts +152 -0
  42. package/test/number.ts +646 -0
  43. package/test/reference.ts +207 -0
  44. package/test/setWalker.ts +101 -21
  45. package/test/string.ts +183 -0
  46. package/test/text.ts +171 -0
  47. package/test/validateSchema.ts +0 -1
  48. package/test/walker.ts +99 -0
  49. package/dist/deepPartial.js +0 -3
  50. package/dist/deepPartial.js.map +0 -1
  51. package/dist/schema.d.ts +0 -1
  52. package/dist/schema.js +0 -3
  53. package/dist/schema.js.map +0 -1
  54. package/dist/set/checkDefaultAndValue.d.ts +0 -3
  55. package/dist/set/checkDefaultAndValue.js +0 -33
  56. package/dist/set/checkDefaultAndValue.js.map +0 -1
  57. package/dist/set/enum.d.ts +0 -2
  58. package/dist/set/enum.js +0 -15
  59. package/dist/set/enum.js.map +0 -1
  60. package/dist/set/fieldValidator.d.ts +0 -6
  61. package/dist/set/fieldValidator.js +0 -144
  62. package/dist/set/fieldValidator.js.map +0 -1
  63. package/dist/set/handleError.d.ts +0 -1
  64. package/dist/set/handleError.js +0 -9
  65. package/dist/set/handleError.js.map +0 -1
  66. package/dist/set/number copy.d.ts +0 -4
  67. package/dist/set/number copy.js +0 -57
  68. package/dist/set/number copy.js.map +0 -1
  69. package/dist/set/rest copy.d.ts +0 -5
  70. package/dist/set/rest copy.js +0 -53
  71. package/dist/set/rest copy.js.map +0 -1
  72. package/dist/setWalker.d.ts +0 -11
  73. package/dist/setWalker.js +0 -189
  74. package/dist/setWalker.js.map +0 -1
  75. package/dist/transformers.d.ts +0 -3
  76. package/dist/transformers.js +0 -18
  77. package/dist/transformers.js.map +0 -1
  78. package/dist/typeWalker.d.ts +0 -3
  79. package/dist/typeWalker.js +0 -18
  80. package/dist/typeWalker.js.map +0 -1
  81. package/dist/validate.d.ts +0 -4
  82. package/dist/validate.js +0 -34
  83. package/dist/validate.js.map +0 -1
  84. package/dist/validateFields.d.ts +0 -4
  85. package/dist/validateFields.js +0 -34
  86. package/dist/validateFields.js.map +0 -1
  87. package/dist/validateSchema copy.d.ts +0 -4
  88. package/dist/validateSchema copy.js +0 -34
  89. package/dist/validateSchema copy.js.map +0 -1
  90. /package/dist/{deepPartial.d.ts → set2/index.d.ts} +0 -0
package/test/number.ts ADDED
@@ -0,0 +1,646 @@
1
+ import test from 'ava'
2
+ import { BasedSchema, setWalker, BasedSetOptionalHandlers } from '../src/index'
3
+
4
+ const schema: BasedSchema = {
5
+ types: {
6
+ bla: {
7
+ prefix: 'bl',
8
+ fields: {
9
+ number: {
10
+ type: 'number',
11
+ maximum: 6,
12
+ minimum: 3,
13
+ },
14
+ exclusiveminmax: {
15
+ type: 'number',
16
+ minimum: 3,
17
+ exclusiveMinimum: true,
18
+ maximum: 6,
19
+ exclusiveMaximum: true,
20
+ },
21
+ integer: {
22
+ type: 'integer',
23
+ },
24
+ multipleOf: {
25
+ type: 'integer',
26
+ multipleOf: 3,
27
+ },
28
+ set: {
29
+ type: 'set',
30
+ items: { type: 'number', minimum: 3, maximum: 6 },
31
+ },
32
+ },
33
+ },
34
+ },
35
+ $defs: {},
36
+ languages: ['en'],
37
+ root: {
38
+ fields: {},
39
+ },
40
+ prefixToTypeMapping: {
41
+ bl: 'bla',
42
+ },
43
+ }
44
+
45
+ const createHandlers = (): {
46
+ results: { path: (number | string)[]; value: any }[]
47
+ handlers: BasedSetOptionalHandlers
48
+ } => {
49
+ const results: { path: (number | string)[]; value: any }[] = []
50
+ const handlers = {
51
+ collect: ({ path, value, typeSchema, fieldSchema, target }) => {
52
+ results.push({ path, value })
53
+ },
54
+ checkRequiredFields: async (paths) => {
55
+ return true
56
+ },
57
+ referenceFilterCondition: async (id, filter) => {
58
+ return true
59
+ },
60
+ }
61
+ return { results, handlers }
62
+ }
63
+
64
+ test('min-max', async (t) => {
65
+ const { handlers, results } = createHandlers()
66
+ await t.throwsAsync(
67
+ setWalker(
68
+ schema,
69
+ {
70
+ $id: 'bl1',
71
+ number: 1,
72
+ },
73
+ handlers
74
+ )
75
+ )
76
+ await t.throwsAsync(
77
+ setWalker(
78
+ schema,
79
+ {
80
+ $id: 'bl1',
81
+ number: 10,
82
+ },
83
+ handlers
84
+ )
85
+ )
86
+ await setWalker(
87
+ schema,
88
+ {
89
+ $id: 'bl1',
90
+ number: 3,
91
+ },
92
+ handlers
93
+ )
94
+
95
+ await setWalker(
96
+ schema,
97
+ {
98
+ $id: 'bl1',
99
+ number: 6,
100
+ },
101
+ handlers
102
+ )
103
+ t.deepEqual(results, [
104
+ { path: ['number'], value: 3 },
105
+ { path: ['number'], value: 6 },
106
+ ])
107
+ })
108
+
109
+ test('min-max exclusive', async (t) => {
110
+ const { handlers, results } = createHandlers()
111
+ await t.throwsAsync(
112
+ setWalker(
113
+ schema,
114
+ {
115
+ $id: 'bl1',
116
+ exclusiveminmax: 3,
117
+ },
118
+ handlers
119
+ )
120
+ )
121
+ console.log('results', results)
122
+ await t.throwsAsync(
123
+ setWalker(
124
+ schema,
125
+ {
126
+ $id: 'bl1',
127
+ exclusiveminmax: 6,
128
+ },
129
+ handlers
130
+ )
131
+ )
132
+ await setWalker(
133
+ schema,
134
+ {
135
+ $id: 'bl1',
136
+ exclusiveminmax: 4,
137
+ },
138
+ handlers
139
+ )
140
+
141
+ await setWalker(
142
+ schema,
143
+ {
144
+ $id: 'bl1',
145
+ exclusiveminmax: 5,
146
+ },
147
+ handlers
148
+ )
149
+ t.deepEqual(results, [
150
+ { path: ['exclusiveminmax'], value: 4 },
151
+ { path: ['exclusiveminmax'], value: 5 },
152
+ ])
153
+ })
154
+
155
+ test('isInteger', async (t) => {
156
+ const { handlers, results } = createHandlers()
157
+
158
+ await t.throwsAsync(
159
+ setWalker(
160
+ schema,
161
+ {
162
+ $id: 'bl1',
163
+ integer: 6.5,
164
+ },
165
+ handlers
166
+ )
167
+ )
168
+
169
+ await setWalker(
170
+ schema,
171
+ {
172
+ $id: 'bl1',
173
+ integer: 5,
174
+ },
175
+ handlers
176
+ )
177
+ t.deepEqual(results, [{ path: ['integer'], value: 5 }])
178
+ })
179
+
180
+ test('isMultiple', async (t) => {
181
+ const { handlers, results } = createHandlers()
182
+
183
+ await t.throwsAsync(
184
+ setWalker(
185
+ schema,
186
+ {
187
+ $id: 'bl1',
188
+ multipleOf: 7,
189
+ },
190
+ handlers
191
+ )
192
+ )
193
+
194
+ await setWalker(
195
+ schema,
196
+ {
197
+ $id: 'bl1',
198
+ multipleOf: 9,
199
+ },
200
+ handlers
201
+ )
202
+ t.deepEqual(results, [{ path: ['multipleOf'], value: 9 }])
203
+ })
204
+
205
+ test('numbers in a set', async (t) => {
206
+ const { handlers, results } = createHandlers()
207
+ await t.throwsAsync(
208
+ setWalker(
209
+ schema,
210
+ {
211
+ $id: 'bl1',
212
+ set: [9, 4, 5, 2],
213
+ },
214
+ handlers
215
+ )
216
+ )
217
+ await setWalker(schema, { $id: 'bl1', set: [3, 3, 3, 3] }, handlers)
218
+ t.deepEqual(results, [{ path: ['set'], value: { $value: [3, 3, 3, 3] } }])
219
+ })
220
+
221
+ test('value', async (t) => {
222
+ const { handlers, results } = createHandlers()
223
+
224
+ await t.throwsAsync(
225
+ setWalker(
226
+ schema,
227
+ {
228
+ $id: 'bl1',
229
+ number: { $value: 7 },
230
+ },
231
+ handlers
232
+ )
233
+ )
234
+ await t.throwsAsync(
235
+ setWalker(
236
+ schema,
237
+ {
238
+ $id: 'bl1',
239
+ exclusiveminmax: { $value: 3 },
240
+ },
241
+ handlers
242
+ )
243
+ )
244
+ await t.throwsAsync(
245
+ setWalker(
246
+ schema,
247
+ {
248
+ $id: 'bl1',
249
+ integer: { value: 3.5 },
250
+ },
251
+ handlers
252
+ )
253
+ )
254
+
255
+ await t.throwsAsync(
256
+ setWalker(
257
+ schema,
258
+ {
259
+ $id: 'bl1',
260
+ set: { $value: [1, 3, 3, 4] },
261
+ },
262
+ handlers
263
+ )
264
+ )
265
+
266
+ await t.throwsAsync(
267
+ setWalker(
268
+ schema,
269
+ {
270
+ $id: 'bl1',
271
+ multipleOf: { $value: 2 },
272
+ },
273
+ handlers
274
+ )
275
+ )
276
+
277
+ await setWalker(
278
+ schema,
279
+ {
280
+ $id: 'bl1',
281
+ number: { $value: 4 },
282
+ },
283
+ handlers
284
+ )
285
+ await setWalker(
286
+ schema,
287
+ {
288
+ $id: 'bl1',
289
+ integer: { $value: 4 },
290
+ },
291
+ handlers
292
+ )
293
+ await setWalker(
294
+ schema,
295
+ {
296
+ $id: 'bl1',
297
+ exclusiveminmax: { $value: 4 },
298
+ },
299
+ handlers
300
+ )
301
+ await setWalker(
302
+ schema,
303
+ {
304
+ $id: 'bl1',
305
+ multipleOf: { $value: 6 },
306
+ },
307
+ handlers
308
+ )
309
+
310
+ await setWalker(
311
+ schema,
312
+ {
313
+ $id: 'bl1',
314
+ set: { $value: [3, 3, 3, 4] },
315
+ },
316
+ handlers
317
+ )
318
+ t.deepEqual(results, [
319
+ { path: ['number'], value: { $value: 4 } },
320
+ { path: ['integer'], value: { $value: 4 } },
321
+ { path: ['exclusiveminmax'], value: { $value: 4 } },
322
+ { path: ['multipleOf'], value: { $value: 6 } },
323
+ { path: ['set'], value: { $value: [3, 3, 3, 4] } },
324
+ ])
325
+ })
326
+
327
+ test('default', async (t) => {
328
+ const { handlers, results } = createHandlers()
329
+
330
+ await t.throwsAsync(
331
+ setWalker(
332
+ schema,
333
+ {
334
+ $id: 'bl1',
335
+ number: { $default: 7 },
336
+ },
337
+ handlers
338
+ )
339
+ )
340
+ await t.throwsAsync(
341
+ setWalker(
342
+ schema,
343
+ {
344
+ $id: 'bl1',
345
+ exclusiveminmax: { $default: 3 },
346
+ },
347
+ handlers
348
+ )
349
+ )
350
+ await t.throwsAsync(
351
+ setWalker(
352
+ schema,
353
+ {
354
+ $id: 'bl1',
355
+ integer: { $default: 3.5 },
356
+ },
357
+ handlers
358
+ )
359
+ )
360
+
361
+ await t.throwsAsync(
362
+ setWalker(
363
+ schema,
364
+ {
365
+ $id: 'bl1',
366
+ set: { $default: [1, 3, 3, 4] },
367
+ },
368
+ handlers
369
+ )
370
+ )
371
+
372
+ await t.throwsAsync(
373
+ setWalker(
374
+ schema,
375
+ {
376
+ $id: 'bl1',
377
+ multipleOf: { $default: 2 },
378
+ },
379
+ handlers
380
+ )
381
+ )
382
+
383
+ await setWalker(
384
+ schema,
385
+ {
386
+ $id: 'bl1',
387
+ number: { $default: 4 },
388
+ },
389
+ handlers
390
+ )
391
+ await setWalker(
392
+ schema,
393
+ {
394
+ $id: 'bl1',
395
+ integer: { $default: 4 },
396
+ },
397
+ handlers
398
+ )
399
+ await setWalker(
400
+ schema,
401
+ {
402
+ $id: 'bl1',
403
+ exclusiveminmax: { $default: 4 },
404
+ },
405
+ handlers
406
+ )
407
+ await setWalker(
408
+ schema,
409
+ {
410
+ $id: 'bl1',
411
+ multipleOf: { $default: 6 },
412
+ },
413
+ handlers
414
+ )
415
+
416
+ t.deepEqual(results, [
417
+ { path: ['number'], value: { $default: 4 } },
418
+ { path: ['integer'], value: { $default: 4 } },
419
+ { path: ['exclusiveminmax'], value: { $default: 4 } },
420
+ { path: ['multipleOf'], value: { $default: 6 } },
421
+ ])
422
+ })
423
+
424
+ test('decrement', async (t) => {
425
+ const { handlers, results } = createHandlers()
426
+ //maxmin
427
+ await t.throwsAsync(
428
+ setWalker(
429
+ schema,
430
+ {
431
+ $id: 'bl1',
432
+ number: { $decrement: 2 },
433
+ },
434
+ handlers
435
+ )
436
+ )
437
+ await t.throwsAsync(
438
+ setWalker(
439
+ schema,
440
+ {
441
+ $id: 'bl1',
442
+ number: { $decrement: 7 },
443
+ },
444
+ handlers
445
+ )
446
+ )
447
+
448
+ await setWalker(
449
+ schema,
450
+ {
451
+ $id: 'bl1',
452
+ number: { $decrement: 3 },
453
+ },
454
+ handlers
455
+ )
456
+ //exclusiveminmax
457
+ await t.throwsAsync(
458
+ setWalker(
459
+ schema,
460
+ {
461
+ $id: 'bl1',
462
+ exclusiveminmax: { $decrement: 3 },
463
+ },
464
+ handlers
465
+ )
466
+ )
467
+ await t.throwsAsync(
468
+ setWalker(
469
+ schema,
470
+ {
471
+ $id: 'bl1',
472
+ exclusiveminmax: { $decrement: 6 },
473
+ },
474
+ handlers
475
+ )
476
+ )
477
+
478
+ await setWalker(
479
+ schema,
480
+ {
481
+ $id: 'bl1',
482
+ exclusiveminmax: { $decrement: 4 },
483
+ },
484
+ handlers
485
+ )
486
+
487
+ //integer
488
+ await t.throwsAsync(
489
+ setWalker(
490
+ schema,
491
+ {
492
+ $id: 'bl1',
493
+ integer: { $decrement: 3.5 },
494
+ },
495
+ handlers
496
+ )
497
+ )
498
+
499
+ await setWalker(
500
+ schema,
501
+ {
502
+ $id: 'bl1',
503
+ integer: { $decrement: 3 },
504
+ },
505
+ handlers
506
+ )
507
+ //multiple of
508
+
509
+ await t.throwsAsync(
510
+ setWalker(
511
+ schema,
512
+ {
513
+ $id: 'bl1',
514
+ multipleOf: { $decrement: 7 },
515
+ },
516
+ handlers
517
+ )
518
+ )
519
+
520
+ await setWalker(
521
+ schema,
522
+ {
523
+ $id: 'bl1',
524
+ multipleOf: { $decrement: 9 },
525
+ },
526
+ handlers
527
+ )
528
+ t.deepEqual(results, [
529
+ { path: ['number'], value: { $decrement: 3 } },
530
+ { path: ['exclusiveminmax'], value: { $decrement: 4 } },
531
+ { path: ['integer'], value: { $decrement: 3 } },
532
+ { path: ['multipleOf'], value: { $decrement: 9 } },
533
+ ])
534
+ })
535
+
536
+ test('increment', async (t) => {
537
+ const { handlers, results } = createHandlers()
538
+ //maxmin
539
+ await t.throwsAsync(
540
+ setWalker(
541
+ schema,
542
+ {
543
+ $id: 'bl1',
544
+ number: { $increment: 2 },
545
+ },
546
+ handlers
547
+ )
548
+ )
549
+ await t.throwsAsync(
550
+ setWalker(
551
+ schema,
552
+ {
553
+ $id: 'bl1',
554
+ number: { $increment: 7 },
555
+ },
556
+ handlers
557
+ )
558
+ )
559
+
560
+ await setWalker(
561
+ schema,
562
+ {
563
+ $id: 'bl1',
564
+ number: { $increment: 3 },
565
+ },
566
+ handlers
567
+ )
568
+ //exclusiveminmax
569
+ await t.throwsAsync(
570
+ setWalker(
571
+ schema,
572
+ {
573
+ $id: 'bl1',
574
+ exclusiveminmax: { $increment: 3 },
575
+ },
576
+ handlers
577
+ )
578
+ )
579
+ await t.throwsAsync(
580
+ setWalker(
581
+ schema,
582
+ {
583
+ $id: 'bl1',
584
+ exclusiveminmax: { $increment: 6 },
585
+ },
586
+ handlers
587
+ )
588
+ )
589
+
590
+ await setWalker(
591
+ schema,
592
+ {
593
+ $id: 'bl1',
594
+ exclusiveminmax: { $increment: 4 },
595
+ },
596
+ handlers
597
+ )
598
+
599
+ //integer
600
+ await t.throwsAsync(
601
+ setWalker(
602
+ schema,
603
+ {
604
+ $id: 'bl1',
605
+ integer: { $increment: 3.5 },
606
+ },
607
+ handlers
608
+ )
609
+ )
610
+
611
+ await setWalker(
612
+ schema,
613
+ {
614
+ $id: 'bl1',
615
+ integer: { $increment: 3 },
616
+ },
617
+ handlers
618
+ )
619
+ //multiple of
620
+
621
+ await t.throwsAsync(
622
+ setWalker(
623
+ schema,
624
+ {
625
+ $id: 'bl1',
626
+ multipleOf: { $increment: 7 },
627
+ },
628
+ handlers
629
+ )
630
+ )
631
+
632
+ await setWalker(
633
+ schema,
634
+ {
635
+ $id: 'bl1',
636
+ multipleOf: { $increment: 9 },
637
+ },
638
+ handlers
639
+ )
640
+ t.deepEqual(results, [
641
+ { path: ['number'], value: { $increment: 3 } },
642
+ { path: ['exclusiveminmax'], value: { $increment: 4 } },
643
+ { path: ['integer'], value: { $increment: 3 } },
644
+ { path: ['multipleOf'], value: { $increment: 9 } },
645
+ ])
646
+ })