shinkansen-transmission 2.2.234 → 2.3.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 (38) hide show
  1. package/babel.config.cjs +1 -0
  2. package/eslint.config.mjs +28 -30
  3. package/index.d.mts +321 -16
  4. package/package.json +8 -8
  5. package/src/index.cjs +2 -0
  6. package/src/index.d.mts +10 -9
  7. package/src/transmission/common/index.d.mts +152 -87
  8. package/src/transmission/common/index.mjs +627 -193
  9. package/src/transmission/from-document-to-hash/array/index.mjs +20 -4
  10. package/src/transmission/from-document-to-hash/boolean/index.mjs +25 -9
  11. package/src/transmission/from-document-to-hash/index.d.mts +8 -19
  12. package/src/transmission/from-document-to-hash/index.mjs +102 -16
  13. package/src/transmission/from-document-to-hash/null/index.mjs +25 -9
  14. package/src/transmission/from-document-to-hash/number/index.mjs +25 -9
  15. package/src/transmission/from-document-to-hash/object/index.mjs +22 -6
  16. package/src/transmission/from-document-to-hash/string/index.mjs +25 -9
  17. package/src/transmission/from-hash-to-document/array/index.mjs +22 -5
  18. package/src/transmission/from-hash-to-document/boolean/index.mjs +21 -4
  19. package/src/transmission/from-hash-to-document/index.d.mts +24 -26
  20. package/src/transmission/from-hash-to-document/index.mjs +264 -142
  21. package/src/transmission/from-hash-to-document/null/index.mjs +21 -4
  22. package/src/transmission/from-hash-to-document/number/index.mjs +21 -4
  23. package/src/transmission/from-hash-to-document/object/index.mjs +22 -5
  24. package/src/transmission/from-hash-to-document/string/index.mjs +26 -4
  25. package/src/transmission/index.d.mts +4 -10
  26. package/src/transmission/to-zashiki/index.d.mts +5 -13
  27. package/src/transmission/to-zashiki/params/index.mjs +430 -0
  28. package/src/transmission/to-zashiki/render/array/index.mjs +737 -0
  29. package/src/transmission/to-zashiki/render/boolean/index.mjs +794 -0
  30. package/src/transmission/to-zashiki/render/index.mjs +157 -0
  31. package/src/transmission/to-zashiki/render/null/index.mjs +796 -0
  32. package/src/transmission/to-zashiki/render/number/index.mjs +940 -0
  33. package/src/transmission/to-zashiki/render/object/index.mjs +653 -0
  34. package/src/transmission/to-zashiki/render/string/index.mjs +910 -0
  35. package/src/transmission/to-zashiki/render-params/root-schema/index.mjs +212 -0
  36. package/src/transmission/to-zashiki/render-params/schema/index.mjs +731 -0
  37. package/src/transmission/to-zashiki/transform-root-schema.mjs +485 -421
  38. package/src/transmission/to-zashiki/transform-schema.mjs +1988 -4663
@@ -0,0 +1,737 @@
1
+ /**
2
+ * @typedef {TransmissionTypes.ObjectLiteralType} ObjectLiteralType
3
+ * @typedef {TransmissionTypes.ObjectType} ObjectType
4
+ *
5
+ * @typedef {TransmissionTypes.EnumType} EnumType
6
+ * @typedef {TransmissionTypes.AnyOfType} AnyOfType
7
+ * @typedef {TransmissionTypes.OneOfType} OneOfType
8
+ * @typedef {TransmissionTypes.FieldType} FieldType
9
+ *
10
+ * @typedef {TransmissionTypes.SchemaType} SchemaType
11
+ * @typedef {TransmissionTypes.ValuesType} ValuesType
12
+ * @typedef {TransmissionTypes.ParamsType} ParamsType
13
+ *
14
+ * @typedef {TransmissionTypes.Zashiki.ZashikiType} ZashikiType
15
+ *
16
+ * @typedef {TransmissionTypes.Zashiki.StringMetaType} ZashikiStringMetaType
17
+ * @typedef {TransmissionTypes.Zashiki.NumberMetaType} ZashikiNumberMetaType
18
+ * @typedef {TransmissionTypes.Zashiki.ArrayMetaType} ZashikiArrayMetaType
19
+ * @typedef {TransmissionTypes.Zashiki.ObjectMetaType} ZashikiObjectMetaType
20
+ * @typedef {TransmissionTypes.Zashiki.BooleanMetaType} ZashikiBooleanMetaType
21
+ * @typedef {TransmissionTypes.Zashiki.NullMetaType} ZashikiNullMetaType
22
+ *
23
+ * @typedef {TransmissionTypes.Zashiki.StringElementsType} ZashikiStringElementsType
24
+ * @typedef {TransmissionTypes.Zashiki.NumberElementsType} ZashikiNumberElementsType
25
+ * @typedef {TransmissionTypes.Zashiki.ArrayElementsType} ZashikiArrayElementsType
26
+ * @typedef {TransmissionTypes.Zashiki.ObjectElementsType} ZashikiObjectElementsType
27
+ * @typedef {TransmissionTypes.Zashiki.BooleanElementsType} ZashikiBooleanElementsType
28
+ * @typedef {TransmissionTypes.Zashiki.NullElementsType} ZashikiNullElementsType
29
+ */
30
+
31
+ import debug from 'debug'
32
+
33
+ import {
34
+ getTitle,
35
+ getDescription,
36
+ isParentUri,
37
+ getMinItems,
38
+ getMaxItems,
39
+ getHasUniqueItems,
40
+ getMinContains,
41
+ getMaxContains,
42
+ getMetaProps,
43
+ getElementsFieldPropsForEnum,
44
+ getElementsFieldPropsForAnyOf,
45
+ getElementsFieldPropsForOneOf,
46
+ getElementsFieldPropsForAllOf
47
+ } from '#transmission/transmission/common'
48
+
49
+ const log = debug('shinkansen-transmission/to-zashiki/render/array')
50
+
51
+ log('`shinkansen` is awake')
52
+
53
+ /**
54
+ * @param {ParamsType} params
55
+ * @param {string} uri
56
+ * @param {{ minItems?: number }} minItems
57
+ * @param {{ maxItems?: number }} maxItems
58
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
59
+ * @param {{ minContains?: number }} minContains
60
+ * @param {{ maxContains?: number }} maxContains
61
+ * @returns {ZashikiArrayMetaType}
62
+ */
63
+ export function renderArrayMetaForEnum (params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
64
+ /**
65
+ * log('renderArrayMetaForEnum')
66
+ */
67
+
68
+ /**
69
+ * @type {{ parentUri?: string }}
70
+ */
71
+ const {
72
+ parentUri = '#',
73
+ ...metaProps
74
+ } = getMetaProps(params, uri)
75
+
76
+ return (
77
+ Object.assign(
78
+ {
79
+ uri,
80
+ type: 'array'
81
+ },
82
+ isParentUri(parentUri, uri) ? { parentUri } : {},
83
+ minItems,
84
+ maxItems,
85
+ hasUniqueItems,
86
+ minContains,
87
+ maxContains,
88
+ metaProps
89
+ )
90
+ )
91
+ }
92
+
93
+ /**
94
+ * @param {ParamsType} params
95
+ * @param {string} uri
96
+ * @param {{ minItems?: number }} minItems
97
+ * @param {{ maxItems?: number }} maxItems
98
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
99
+ * @param {{ minContains?: number }} minContains
100
+ * @param {{ maxContains?: number }} maxContains
101
+ * @returns {ZashikiArrayMetaType}
102
+ */
103
+ export function renderArrayMetaForAnyOf (params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
104
+ /**
105
+ * log('renderArrayMetaForAnyOf')
106
+ */
107
+
108
+ /**
109
+ * @type {{ parentUri?: string }}
110
+ */
111
+ const {
112
+ parentUri = '#',
113
+ ...metaProps
114
+ } = getMetaProps(params, uri)
115
+
116
+ return (
117
+ Object.assign(
118
+ {
119
+ uri,
120
+ type: 'array'
121
+ },
122
+ isParentUri(parentUri, uri) ? { parentUri } : {},
123
+ minItems,
124
+ maxItems,
125
+ hasUniqueItems,
126
+ minContains,
127
+ maxContains,
128
+ metaProps
129
+ )
130
+ )
131
+ }
132
+
133
+ /**
134
+ * @param {ParamsType} params
135
+ * @param {string} uri
136
+ * @param {{ minItems?: number }} minItems
137
+ * @param {{ maxItems?: number }} maxItems
138
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
139
+ * @param {{ minContains?: number }} minContains
140
+ * @param {{ maxContains?: number }} maxContains
141
+ * @returns {ZashikiArrayMetaType}
142
+ */
143
+ export function renderArrayMetaForOneOf (params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
144
+ /**
145
+ * log('renderArrayMetaForOneOf')
146
+ */
147
+
148
+ /**
149
+ * @type {{ parentUri?: string }}
150
+ */
151
+ const {
152
+ parentUri = '#',
153
+ ...metaProps
154
+ } = getMetaProps(params, uri)
155
+
156
+ return (
157
+ Object.assign(
158
+ {
159
+ uri,
160
+ type: 'array'
161
+ },
162
+ isParentUri(parentUri, uri) ? { parentUri } : {},
163
+ minItems,
164
+ maxItems,
165
+ hasUniqueItems,
166
+ minContains,
167
+ maxContains,
168
+ metaProps
169
+ )
170
+ )
171
+ }
172
+
173
+ /**
174
+ * @param {ParamsType} params
175
+ * @param {string} uri
176
+ * @param {{ minItems?: number }} minItems
177
+ * @param {{ maxItems?: number }} maxItems
178
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
179
+ * @param {{ minContains?: number }} minContains
180
+ * @param {{ maxContains?: number }} maxContains
181
+ * @returns {ZashikiArrayMetaType}
182
+ */
183
+ export function renderArrayMetaForAllOf (params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
184
+ /**
185
+ * log('renderArrayMetaForAllOf')
186
+ */
187
+
188
+ /**
189
+ * @type {{ parentUri?: string }}
190
+ */
191
+ const {
192
+ parentUri = '#',
193
+ ...metaProps
194
+ } = getMetaProps(params, uri)
195
+
196
+ return (
197
+ Object.assign(
198
+ {
199
+ uri,
200
+ type: 'array'
201
+ },
202
+ isParentUri(parentUri, uri) ? { parentUri } : {},
203
+ minItems,
204
+ maxItems,
205
+ hasUniqueItems,
206
+ minContains,
207
+ maxContains,
208
+ metaProps
209
+ )
210
+ )
211
+ }
212
+
213
+ /**
214
+ * @param {ParamsType} params
215
+ * @param {string} uri
216
+ * @param {{ minItems?: number }} minItems
217
+ * @param {{ maxItems?: number }} maxItems
218
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
219
+ * @param {{ minContains?: number }} minContains
220
+ * @param {{ maxContains?: number }} maxContains
221
+ * @returns {ZashikiArrayMetaType}
222
+ */
223
+ export function renderArrayMeta (params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
224
+ /**
225
+ * log('renderArrayMeta')
226
+ */
227
+
228
+ /**
229
+ * @type {{ parentUri?: string }}
230
+ */
231
+ const {
232
+ parentUri = '#',
233
+ ...metaProps
234
+ } = getMetaProps(params, uri)
235
+
236
+ return (
237
+ Object.assign(
238
+ {
239
+ uri,
240
+ type: 'array'
241
+ },
242
+ isParentUri(parentUri, uri) ? { parentUri } : {},
243
+ minItems,
244
+ maxItems,
245
+ hasUniqueItems,
246
+ minContains,
247
+ maxContains,
248
+ metaProps
249
+ )
250
+ )
251
+ }
252
+
253
+ /**
254
+ * @param {ObjectLiteralType | ObjectType} field
255
+ * @param {ParamsType} params
256
+ * @param {string} uri
257
+ * @param {{ minItems?: number }} minItems
258
+ * @param {{ maxItems?: number }} maxItems
259
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
260
+ * @param {{ minContains?: number }} minContains
261
+ * @param {{ maxContains?: number }} maxContains
262
+ * @returns {EnumType}
263
+ */
264
+ export function renderArrayElementsFieldForEnum (field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
265
+ /**
266
+ * log('renderArrayElementsFieldForEnum')
267
+ */
268
+
269
+ const fieldProps = getElementsFieldPropsForEnum(params, uri)
270
+
271
+ return (
272
+ Object.assign(
273
+ field,
274
+ minItems,
275
+ maxItems,
276
+ hasUniqueItems,
277
+ minContains,
278
+ maxContains,
279
+ fieldProps,
280
+ {
281
+ id: uri
282
+ }
283
+ )
284
+ )
285
+ }
286
+
287
+ /**
288
+ * @param {ObjectLiteralType | ObjectType} field
289
+ * @param {ParamsType} params
290
+ * @param {string} uri
291
+ * @param {{ minItems?: number }} minItems
292
+ * @param {{ maxItems?: number }} maxItems
293
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
294
+ * @param {{ minContains?: number }} minContains
295
+ * @param {{ maxContains?: number }} maxContains
296
+ * @returns {AnyOfType}
297
+ */
298
+ export function renderArrayElementsFieldForAnyOf (field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
299
+ /**
300
+ * log('renderArrayElementsFieldForAnyOf')
301
+ */
302
+
303
+ const fieldProps = getElementsFieldPropsForAnyOf(params, uri)
304
+
305
+ return (
306
+ Object.assign(
307
+ field,
308
+ minItems,
309
+ maxItems,
310
+ hasUniqueItems,
311
+ minContains,
312
+ maxContains,
313
+ fieldProps,
314
+ {
315
+ id: uri
316
+ }
317
+ )
318
+ )
319
+ }
320
+
321
+ /**
322
+ * @param {ObjectLiteralType | ObjectType} field
323
+ * @param {ParamsType} params
324
+ * @param {string} uri
325
+ * @param {{ minItems?: number }} minItems
326
+ * @param {{ maxItems?: number }} maxItems
327
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
328
+ * @param {{ minContains?: number }} minContains
329
+ * @param {{ maxContains?: number }} maxContains
330
+ * @returns {OneOfType}
331
+ */
332
+ export function renderArrayElementsFieldForOneOf (field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
333
+ /**
334
+ * log('renderArrayElementsFieldForOneOf')
335
+ */
336
+
337
+ const fieldProps = getElementsFieldPropsForOneOf(params, uri)
338
+
339
+ return (
340
+ Object.assign(
341
+ field,
342
+ minItems,
343
+ maxItems,
344
+ hasUniqueItems,
345
+ minContains,
346
+ maxContains,
347
+ fieldProps,
348
+ {
349
+ id: uri
350
+ }
351
+ )
352
+ )
353
+ }
354
+
355
+ /**
356
+ * @param {ObjectLiteralType | ObjectType} field
357
+ * @param {ParamsType} params
358
+ * @param {string} uri
359
+ * @param {{ minItems?: number }} minItems
360
+ * @param {{ maxItems?: number }} maxItems
361
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
362
+ * @param {{ minContains?: number }} minContains
363
+ * @param {{ maxContains?: number }} maxContains
364
+ * @returns {FieldType}
365
+ */
366
+ export function renderArrayElementsFieldForAllOf (field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
367
+ /**
368
+ * log('renderArrayElementsFieldForAllOf')
369
+ */
370
+
371
+ const fieldProps = getElementsFieldPropsForAllOf(params, uri)
372
+
373
+ return (
374
+ Object.assign(
375
+ field,
376
+ minItems,
377
+ maxItems,
378
+ hasUniqueItems,
379
+ minContains,
380
+ maxContains,
381
+ fieldProps,
382
+ {
383
+ id: uri
384
+ }
385
+ )
386
+ )
387
+ }
388
+
389
+ /**
390
+ * @param {ObjectLiteralType | ObjectType} elements
391
+ * @param {SchemaType} schema
392
+ * @returns {ObjectLiteralType | ObjectType}
393
+ */
394
+ export function getArrayElements (elements, schema) {
395
+ /**
396
+ * log('getArrayElements')
397
+ */
398
+
399
+ return (
400
+ Object.assign(
401
+ elements,
402
+ getTitle(schema),
403
+ getDescription(schema)
404
+ )
405
+ )
406
+ }
407
+
408
+ /**
409
+ * @param {SchemaType} schema
410
+ * @param {ParamsType} params
411
+ * @param {string} uri
412
+ * @param {{ minItems?: number }} minItems
413
+ * @param {{ maxItems?: number }} maxItems
414
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
415
+ * @param {{ minContains?: number }} minContains
416
+ * @param {{ maxContains?: number }} maxContains
417
+ * @returns {ZashikiArrayElementsType}
418
+ */
419
+ export function renderArrayElementsForEnum (schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
420
+ /**
421
+ * log('renderArrayElementsForEnum')
422
+ */
423
+
424
+ /**
425
+ * @type {ObjectLiteralType}
426
+ */
427
+ const elements = {}
428
+
429
+ /**
430
+ * @type {ObjectLiteralType}
431
+ */
432
+ const field = {}
433
+
434
+ return (
435
+ Object.assign(
436
+ getArrayElements(elements, schema),
437
+ {
438
+ enum: renderArrayElementsFieldForEnum(field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
439
+ }
440
+ )
441
+ )
442
+ }
443
+
444
+ /**
445
+ * @param {SchemaType} schema
446
+ * @param {ParamsType} params
447
+ * @param {string} uri
448
+ * @param {{ minItems?: number }} minItems
449
+ * @param {{ maxItems?: number }} maxItems
450
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
451
+ * @param {{ minContains?: number }} minContains
452
+ * @param {{ maxContains?: number }} maxContains
453
+ * @returns {ZashikiArrayElementsType}
454
+ */
455
+ export function renderArrayElementsForAnyOf (schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
456
+ /**
457
+ * log('renderArrayElementsForAnyOf')
458
+ */
459
+
460
+ /**
461
+ * @type {ObjectLiteralType}
462
+ */
463
+ const elements = {}
464
+
465
+ /**
466
+ * @type {ObjectLiteralType}
467
+ */
468
+ const field = {}
469
+
470
+ return (
471
+ Object.assign(
472
+ getArrayElements(elements, schema),
473
+ {
474
+ anyOf: renderArrayElementsFieldForAnyOf(field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
475
+ }
476
+ )
477
+ )
478
+ }
479
+
480
+ /**
481
+ * @param {SchemaType} schema
482
+ * @param {ParamsType} params
483
+ * @param {string} uri
484
+ * @param {{ minItems?: number }} minItems
485
+ * @param {{ maxItems?: number }} maxItems
486
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
487
+ * @param {{ minContains?: number }} minContains
488
+ * @param {{ maxContains?: number }} maxContains
489
+ * @returns {ZashikiArrayElementsType}
490
+ */
491
+ export function renderArrayElementsForOneOf (schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
492
+ /**
493
+ * log('renderArrayElementsForOneOf')
494
+ */
495
+
496
+ /**
497
+ * @type {ObjectLiteralType}
498
+ */
499
+ const elements = {}
500
+
501
+ /**
502
+ * @type {ObjectLiteralType}
503
+ */
504
+ const field = {}
505
+
506
+ return (
507
+ Object.assign(
508
+ getArrayElements(elements, schema),
509
+ {
510
+ oneOf: renderArrayElementsFieldForOneOf(field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
511
+ }
512
+ )
513
+ )
514
+ }
515
+
516
+ /**
517
+ * @param {SchemaType} schema
518
+ * @param {ParamsType} params
519
+ * @param {string} uri
520
+ * @param {{ minItems?: number }} minItems
521
+ * @param {{ maxItems?: number }} maxItems
522
+ * @param {{ hasUniqueItems?: boolean }} hasUniqueItems
523
+ * @param {{ minContains?: number }} minContains
524
+ * @param {{ maxContains?: number }} maxContains
525
+ * @returns {ZashikiArrayElementsType}
526
+ */
527
+ export function renderArrayElementsForAllOf (schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains) {
528
+ /**
529
+ * log('renderArrayElementsForAllOf')
530
+ */
531
+
532
+ /**
533
+ * @type {ObjectLiteralType}
534
+ */
535
+ const elements = {}
536
+
537
+ /**
538
+ * @type {ObjectLiteralType}
539
+ */
540
+ const field = {}
541
+
542
+ return (
543
+ Object.assign(
544
+ getArrayElements(elements, schema),
545
+ {
546
+ field: renderArrayElementsFieldForAllOf(field, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
547
+ }
548
+ )
549
+ )
550
+ }
551
+
552
+ /**
553
+ * @param {SchemaType} schema
554
+ * @param {ParamsType} params
555
+ * @returns {ZashikiArrayElementsType}
556
+ */
557
+ export function renderArrayElements (schema, params) {
558
+ /**
559
+ * log('renderArrayElements')
560
+ */
561
+
562
+ /**
563
+ * @type {ObjectLiteralType}
564
+ */
565
+ const elements = {}
566
+
567
+ const {
568
+ fields = []
569
+ } = params
570
+
571
+ return (
572
+ Object.assign(
573
+ getArrayElements(elements, schema),
574
+ {
575
+ fields
576
+ }
577
+ )
578
+ )
579
+ }
580
+
581
+ /**
582
+ * "enum"
583
+ *
584
+ * @param {SchemaType} schema
585
+ * @param {ValuesType} values
586
+ * @param {ParamsType} params
587
+ * @returns {ZashikiType}
588
+ */
589
+ export function renderArrayForEnum (schema, values, params) {
590
+ /**
591
+ * log('renderArrayForEnum')
592
+ */
593
+
594
+ const {
595
+ uri = '#/'
596
+ } = params
597
+
598
+ const minItems = getMinItems(schema)
599
+ const maxItems = getMaxItems(schema)
600
+ const hasUniqueItems = getHasUniqueItems(schema)
601
+ const maxContains = getMaxContains(schema)
602
+ const minContains = getMinContains(schema)
603
+
604
+ const meta = renderArrayMetaForEnum(params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
605
+ const elements = renderArrayElementsForEnum(schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
606
+
607
+ return {
608
+ meta,
609
+ elements
610
+ }
611
+ }
612
+
613
+ /**
614
+ * "anyOf"
615
+ *
616
+ * @param {SchemaType} schema
617
+ * @param {ValuesType} values
618
+ * @param {ParamsType} params
619
+ * @returns {ZashikiType}
620
+ */
621
+ export function renderArrayForAnyOf (schema, values, params) {
622
+ /**
623
+ * log('renderArrayForAnyOf')
624
+ */
625
+
626
+ const {
627
+ uri = '#/'
628
+ } = params
629
+
630
+ const minItems = getMinItems(schema)
631
+ const maxItems = getMaxItems(schema)
632
+ const hasUniqueItems = getHasUniqueItems(schema)
633
+ const maxContains = getMaxContains(schema)
634
+ const minContains = getMinContains(schema)
635
+
636
+ const meta = renderArrayMetaForAnyOf(params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
637
+ const elements = renderArrayElementsForAnyOf(schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
638
+
639
+ return {
640
+ meta,
641
+ elements
642
+ }
643
+ }
644
+
645
+ /**
646
+ * "oneOf"
647
+ *
648
+ * @param {SchemaType} schema
649
+ * @param {ValuesType} values
650
+ * @param {ParamsType} params
651
+ * @returns {ZashikiType}
652
+ */
653
+ export function renderArrayForOneOf (schema, values, params) {
654
+ /**
655
+ * log('renderArrayForOneOf')
656
+ */
657
+
658
+ const {
659
+ uri = '#/'
660
+ } = params
661
+
662
+ const minItems = getMinItems(schema)
663
+ const maxItems = getMaxItems(schema)
664
+ const hasUniqueItems = getHasUniqueItems(schema)
665
+ const maxContains = getMaxContains(schema)
666
+ const minContains = getMinContains(schema)
667
+
668
+ const meta = renderArrayMetaForOneOf(params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
669
+ const elements = renderArrayElementsForOneOf(schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
670
+
671
+ return {
672
+ meta,
673
+ elements
674
+ }
675
+ }
676
+
677
+ /**
678
+ * "allOf"
679
+ *
680
+ * @param {SchemaType} schema
681
+ * @param {ValuesType} values
682
+ * @param {ParamsType} params
683
+ * @returns {ZashikiType}
684
+ */
685
+ export function renderArrayForAllOf (schema, values, params) {
686
+ /**
687
+ * log('renderArrayForAllOf')
688
+ */
689
+
690
+ const {
691
+ uri = '#/'
692
+ } = params
693
+
694
+ const minItems = getMinItems(schema)
695
+ const maxItems = getMaxItems(schema)
696
+ const hasUniqueItems = getHasUniqueItems(schema)
697
+ const maxContains = getMaxContains(schema)
698
+ const minContains = getMinContains(schema)
699
+
700
+ const meta = renderArrayMetaForAllOf(params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
701
+ const elements = renderArrayElementsForAllOf(schema, params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
702
+
703
+ return {
704
+ meta,
705
+ elements
706
+ }
707
+ }
708
+
709
+ /**
710
+ * @param {SchemaType} schema
711
+ * @param {ValuesType} values
712
+ * @param {ParamsType} params
713
+ * @returns {ZashikiType}
714
+ */
715
+ export function renderArray (schema, values, params) {
716
+ /**
717
+ * log('renderArray')
718
+ */
719
+
720
+ const {
721
+ uri = '#/'
722
+ } = params
723
+
724
+ const minItems = getMinItems(schema)
725
+ const maxItems = getMaxItems(schema)
726
+ const hasUniqueItems = getHasUniqueItems(schema)
727
+ const maxContains = getMaxContains(schema)
728
+ const minContains = getMinContains(schema)
729
+
730
+ const meta = renderArrayMeta(params, uri, minItems, maxItems, hasUniqueItems, minContains, maxContains)
731
+ const elements = renderArrayElements(schema, params)
732
+
733
+ return {
734
+ meta,
735
+ elements
736
+ }
737
+ }