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.
- package/babel.config.cjs +1 -0
- package/eslint.config.mjs +28 -30
- package/index.d.mts +321 -16
- package/package.json +8 -8
- package/src/index.cjs +2 -0
- package/src/index.d.mts +10 -9
- package/src/transmission/common/index.d.mts +152 -87
- package/src/transmission/common/index.mjs +627 -193
- package/src/transmission/from-document-to-hash/array/index.mjs +20 -4
- package/src/transmission/from-document-to-hash/boolean/index.mjs +25 -9
- package/src/transmission/from-document-to-hash/index.d.mts +8 -19
- package/src/transmission/from-document-to-hash/index.mjs +102 -16
- package/src/transmission/from-document-to-hash/null/index.mjs +25 -9
- package/src/transmission/from-document-to-hash/number/index.mjs +25 -9
- package/src/transmission/from-document-to-hash/object/index.mjs +22 -6
- package/src/transmission/from-document-to-hash/string/index.mjs +25 -9
- package/src/transmission/from-hash-to-document/array/index.mjs +22 -5
- package/src/transmission/from-hash-to-document/boolean/index.mjs +21 -4
- package/src/transmission/from-hash-to-document/index.d.mts +24 -26
- package/src/transmission/from-hash-to-document/index.mjs +264 -142
- package/src/transmission/from-hash-to-document/null/index.mjs +21 -4
- package/src/transmission/from-hash-to-document/number/index.mjs +21 -4
- package/src/transmission/from-hash-to-document/object/index.mjs +22 -5
- package/src/transmission/from-hash-to-document/string/index.mjs +26 -4
- package/src/transmission/index.d.mts +4 -10
- package/src/transmission/to-zashiki/index.d.mts +5 -13
- package/src/transmission/to-zashiki/params/index.mjs +430 -0
- package/src/transmission/to-zashiki/render/array/index.mjs +737 -0
- package/src/transmission/to-zashiki/render/boolean/index.mjs +794 -0
- package/src/transmission/to-zashiki/render/index.mjs +157 -0
- package/src/transmission/to-zashiki/render/null/index.mjs +796 -0
- package/src/transmission/to-zashiki/render/number/index.mjs +940 -0
- package/src/transmission/to-zashiki/render/object/index.mjs +653 -0
- package/src/transmission/to-zashiki/render/string/index.mjs +910 -0
- package/src/transmission/to-zashiki/render-params/root-schema/index.mjs +212 -0
- package/src/transmission/to-zashiki/render-params/schema/index.mjs +731 -0
- package/src/transmission/to-zashiki/transform-root-schema.mjs +485 -421
- package/src/transmission/to-zashiki/transform-schema.mjs +1988 -4663
@@ -1,26 +1,22 @@
|
|
1
|
+
/**
|
2
|
+
* @typedef {TransmissionTypes.SchemaType} SchemaType
|
3
|
+
* @typedef {TransmissionTypes.ValuesType} ValuesType
|
4
|
+
* @typedef {TransmissionTypes.ParamsType} ParamsType
|
5
|
+
*
|
6
|
+
* @typedef {TransmissionTypes.Zashiki.ZashikiType} ZashikiType
|
7
|
+
*/
|
8
|
+
|
1
9
|
import debug from 'debug'
|
2
10
|
|
3
11
|
import {
|
4
12
|
isArray,
|
5
13
|
isObject,
|
6
|
-
|
7
14
|
getSelectedItems,
|
8
|
-
|
9
15
|
hasEnum,
|
10
|
-
getEnum,
|
11
16
|
hasAnyOf,
|
12
17
|
hasOneOf,
|
13
18
|
hasAllOf,
|
14
|
-
|
15
|
-
normaliseUri,
|
16
|
-
|
17
|
-
getMetaProps,
|
18
|
-
|
19
|
-
getElementsProps,
|
20
|
-
getElementsFieldPropsForEnum,
|
21
|
-
getElementsFieldPropsForAnyOf,
|
22
|
-
getElementsFieldPropsForOneOf,
|
23
|
-
getElementsFieldPropsForAllOf
|
19
|
+
getMetaProps
|
24
20
|
} from '#transmission/transmission/common'
|
25
21
|
|
26
22
|
import {
|
@@ -30,225 +26,93 @@ import {
|
|
30
26
|
mapTransformNullByIndex,
|
31
27
|
mapTransformArrayByIndex,
|
32
28
|
mapTransformObjectByIndex,
|
33
|
-
|
34
29
|
mapTransformByIndex,
|
35
30
|
getTransformByIndex,
|
31
|
+
mapTransformByKey
|
32
|
+
} from './transform-schema.mjs'
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
renderBooleanForEnum,
|
46
|
-
renderBooleanForAnyOf,
|
47
|
-
renderBooleanForOneOf,
|
48
|
-
renderBooleanForAllOf,
|
49
|
-
renderBoolean,
|
50
|
-
|
51
|
-
renderObjectForEnum,
|
52
|
-
renderObjectForAnyOf,
|
53
|
-
renderObjectForOneOf,
|
54
|
-
renderObjectForAllOf,
|
55
|
-
renderObject,
|
56
|
-
|
57
|
-
renderArrayForEnum,
|
58
|
-
renderArrayForAnyOf,
|
59
|
-
renderArrayForOneOf,
|
60
|
-
renderArrayForAllOf,
|
61
|
-
renderArray,
|
62
|
-
|
63
|
-
renderNumberForEnum,
|
64
|
-
renderNumberForAnyOf,
|
65
|
-
renderNumberForOneOf,
|
66
|
-
renderNumberForAllOf,
|
67
|
-
renderNumber,
|
34
|
+
import {
|
35
|
+
getRenderParamsForEnum,
|
36
|
+
getRenderParamsForAnyOf,
|
37
|
+
getRenderParamsForOneOf,
|
38
|
+
getRenderParamsForAllOf,
|
39
|
+
getRenderParams
|
40
|
+
} from './render-params/root-schema/index.mjs'
|
68
41
|
|
42
|
+
import {
|
69
43
|
renderStringForEnum,
|
70
44
|
renderStringForAnyOf,
|
71
45
|
renderStringForOneOf,
|
72
46
|
renderStringForAllOf,
|
73
47
|
renderString
|
74
|
-
} from './
|
75
|
-
|
76
|
-
const log = debug('shinkansen-transmission/to-zashiki/root-schema')
|
48
|
+
} from './render/string/index.mjs'
|
77
49
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
const {
|
86
|
-
parentUri = '#',
|
87
|
-
uri = '#/',
|
88
|
-
selectedItems = [],
|
89
|
-
items = []
|
90
|
-
} = params
|
91
|
-
|
92
|
-
const meta = Object.assign(getMetaProps(params, uri), {
|
93
|
-
schema: rootSchema,
|
94
|
-
selectedItems,
|
95
|
-
items
|
96
|
-
})
|
97
|
-
|
98
|
-
const elements = {
|
99
|
-
enum: Object.assign(getElementsFieldPropsForEnum(params, uri), {
|
100
|
-
selectedItems,
|
101
|
-
items
|
102
|
-
})
|
103
|
-
}
|
104
|
-
|
105
|
-
return Object.assign(params, {
|
106
|
-
parentUri,
|
107
|
-
uri,
|
108
|
-
[uri]: {
|
109
|
-
meta,
|
110
|
-
elements
|
111
|
-
}
|
112
|
-
})
|
113
|
-
}
|
114
|
-
|
115
|
-
export function getRenderParamsForAnyOf (rootSchema, values, params) {
|
116
|
-
/*
|
117
|
-
* log('getRenderParamsForAnyOf')
|
118
|
-
*/
|
119
|
-
|
120
|
-
const {
|
121
|
-
parentUri = '#',
|
122
|
-
uri = '#/',
|
123
|
-
selectedItems = [],
|
124
|
-
items = []
|
125
|
-
} = params
|
126
|
-
|
127
|
-
const meta = Object.assign(getMetaProps(params, uri), {
|
128
|
-
schema: rootSchema,
|
129
|
-
selectedItems,
|
130
|
-
items
|
131
|
-
})
|
132
|
-
|
133
|
-
const elements = {
|
134
|
-
anyOf: Object.assign(getElementsFieldPropsForAnyOf(params, uri), {
|
135
|
-
selectedItems,
|
136
|
-
items
|
137
|
-
})
|
138
|
-
}
|
139
|
-
|
140
|
-
return Object.assign(params, {
|
141
|
-
parentUri,
|
142
|
-
uri,
|
143
|
-
[uri]: {
|
144
|
-
meta,
|
145
|
-
elements
|
146
|
-
}
|
147
|
-
})
|
148
|
-
}
|
149
|
-
|
150
|
-
export function getRenderParamsForOneOf (rootSchema, values, params) {
|
151
|
-
/*
|
152
|
-
* log('getRenderParamsForOneOf')
|
153
|
-
*/
|
154
|
-
|
155
|
-
const {
|
156
|
-
parentUri = '#',
|
157
|
-
uri = '#/',
|
158
|
-
selectedItems = [],
|
159
|
-
items = []
|
160
|
-
} = params
|
161
|
-
|
162
|
-
const meta = Object.assign(getMetaProps(params, uri), {
|
163
|
-
schema: rootSchema,
|
164
|
-
selectedItems,
|
165
|
-
items
|
166
|
-
})
|
167
|
-
|
168
|
-
const elements = {
|
169
|
-
oneOf: Object.assign(getElementsFieldPropsForOneOf(params, uri), {
|
170
|
-
selectedItems,
|
171
|
-
items
|
172
|
-
})
|
173
|
-
}
|
174
|
-
|
175
|
-
return Object.assign(params, {
|
176
|
-
parentUri,
|
177
|
-
uri,
|
178
|
-
[uri]: {
|
179
|
-
meta,
|
180
|
-
elements
|
181
|
-
}
|
182
|
-
})
|
183
|
-
}
|
184
|
-
|
185
|
-
export function getRenderParamsForAllOf (rootSchema, values, params) {
|
186
|
-
/*
|
187
|
-
* log('getRenderParamsForAllOf')
|
188
|
-
*/
|
50
|
+
import {
|
51
|
+
renderNumberForEnum,
|
52
|
+
renderNumberForAnyOf,
|
53
|
+
renderNumberForOneOf,
|
54
|
+
renderNumberForAllOf,
|
55
|
+
renderNumber
|
56
|
+
} from './render/number/index.mjs'
|
189
57
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
58
|
+
import {
|
59
|
+
renderArrayForEnum,
|
60
|
+
renderArrayForAnyOf,
|
61
|
+
renderArrayForOneOf,
|
62
|
+
renderArrayForAllOf,
|
63
|
+
renderArray
|
64
|
+
} from './render/array/index.mjs'
|
194
65
|
|
195
|
-
|
196
|
-
|
197
|
-
|
66
|
+
import {
|
67
|
+
renderObjectForEnum,
|
68
|
+
renderObjectForAnyOf,
|
69
|
+
renderObjectForOneOf,
|
70
|
+
renderObjectForAllOf,
|
71
|
+
renderObject
|
72
|
+
} from './render/object/index.mjs'
|
198
73
|
|
199
|
-
|
200
|
-
|
201
|
-
|
74
|
+
import {
|
75
|
+
renderBooleanForEnum,
|
76
|
+
renderBooleanForAnyOf,
|
77
|
+
renderBooleanForOneOf,
|
78
|
+
renderBooleanForAllOf,
|
79
|
+
renderBoolean
|
80
|
+
} from './render/boolean/index.mjs'
|
202
81
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
})
|
211
|
-
}
|
82
|
+
import {
|
83
|
+
renderNullForEnum,
|
84
|
+
renderNullForAnyOf,
|
85
|
+
renderNullForOneOf,
|
86
|
+
renderNullForAllOf,
|
87
|
+
renderNull
|
88
|
+
} from './render/null/index.mjs'
|
212
89
|
|
213
|
-
|
214
|
-
/*
|
215
|
-
* log('getRenderParams')
|
216
|
-
*/
|
90
|
+
const log = debug('shinkansen-transmission/to-zashiki/transform-schema')
|
217
91
|
|
218
|
-
|
219
|
-
parentUri = '#',
|
220
|
-
uri = '#/',
|
221
|
-
fields = []
|
222
|
-
} = params
|
92
|
+
log('`shinkansen` is awake')
|
223
93
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
fields
|
232
|
-
})
|
233
|
-
|
234
|
-
return Object.assign(params, {
|
235
|
-
parentUri,
|
236
|
-
uri,
|
237
|
-
[uri]: {
|
238
|
-
meta,
|
239
|
-
elements
|
240
|
-
}
|
241
|
-
})
|
94
|
+
/**
|
95
|
+
* @param {SchemaType} schemaProps
|
96
|
+
* @param {SchemaType} item
|
97
|
+
* @returns {SchemaType}
|
98
|
+
*/
|
99
|
+
function toSchema (schemaProps, item) {
|
100
|
+
return Object.assign(schemaProps, item)
|
242
101
|
}
|
243
102
|
|
244
|
-
|
103
|
+
/**
|
245
104
|
* Root schema
|
246
105
|
*
|
247
106
|
* "enum"
|
107
|
+
*
|
108
|
+
* @param {SchemaType} rootSchema
|
109
|
+
* @param {ValuesType} values
|
110
|
+
* @param {ParamsType} params
|
111
|
+
* @returns {ZashikiType}
|
248
112
|
*/
|
249
|
-
export function
|
113
|
+
export function transformStringForEnum (rootSchema, values, params) {
|
250
114
|
/*
|
251
|
-
* log('
|
115
|
+
* log('transformStringForEnum')
|
252
116
|
*/
|
253
117
|
|
254
118
|
const {
|
@@ -259,19 +123,24 @@ export function transformNullForEnum (rootSchema, values, params) {
|
|
259
123
|
selectedItems = getSelectedItems(values, uri) // uri
|
260
124
|
} = getMetaProps(params, uri)
|
261
125
|
|
262
|
-
const items = getEnum(rootSchema)
|
126
|
+
const { enum: items = [] } = rootSchema // const items = getEnum(rootSchema)
|
263
127
|
|
264
|
-
return
|
128
|
+
return renderStringForEnum(rootSchema, values, getRenderParamsForEnum(rootSchema, Object.assign(params, { selectedItems, items })))
|
265
129
|
}
|
266
130
|
|
267
|
-
|
131
|
+
/**
|
268
132
|
* Root schema
|
269
133
|
*
|
270
134
|
* "anyOf"
|
135
|
+
*
|
136
|
+
* @param {SchemaType} rootSchema
|
137
|
+
* @param {ValuesType} values
|
138
|
+
* @param {ParamsType} params
|
139
|
+
* @returns {ZashikiType}
|
271
140
|
*/
|
272
|
-
export function
|
141
|
+
export function transformStringForAnyOf (rootSchema, values, params) {
|
273
142
|
/*
|
274
|
-
* log('
|
143
|
+
* log('transformStringForAnyOf')
|
275
144
|
*/
|
276
145
|
|
277
146
|
const {
|
@@ -283,19 +152,24 @@ export function transformNullForAnyOf (rootSchema, values, params) {
|
|
283
152
|
} = getMetaProps(params, uri)
|
284
153
|
|
285
154
|
const { anyOf = [] } = rootSchema
|
286
|
-
const items = anyOf.map(
|
155
|
+
const items = anyOf.filter(isObject).map(mapTransformStringByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
287
156
|
|
288
|
-
return
|
157
|
+
return renderStringForAnyOf(rootSchema, values, getRenderParamsForAnyOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
289
158
|
}
|
290
159
|
|
291
|
-
|
160
|
+
/**
|
292
161
|
* Root schema
|
293
162
|
*
|
294
163
|
* "oneOf"
|
164
|
+
*
|
165
|
+
* @param {SchemaType} rootSchema
|
166
|
+
* @param {ValuesType} values
|
167
|
+
* @param {ParamsType} params
|
168
|
+
* @returns {ZashikiType}
|
295
169
|
*/
|
296
|
-
export function
|
170
|
+
export function transformStringForOneOf (rootSchema, values, params) {
|
297
171
|
/*
|
298
|
-
* log('
|
172
|
+
* log('transformStringForOneOf')
|
299
173
|
*/
|
300
174
|
|
301
175
|
const {
|
@@ -307,63 +181,86 @@ export function transformNullForOneOf (rootSchema, values, params) {
|
|
307
181
|
} = getMetaProps(params, uri)
|
308
182
|
|
309
183
|
const { oneOf = [] } = rootSchema
|
310
|
-
const items = oneOf.map(
|
184
|
+
const items = oneOf.filter(isObject).map(mapTransformStringByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
311
185
|
|
312
|
-
return
|
186
|
+
return renderStringForOneOf(rootSchema, values, getRenderParamsForOneOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
313
187
|
}
|
314
188
|
|
315
|
-
|
189
|
+
/**
|
316
190
|
* Root schema
|
317
191
|
*
|
318
192
|
* "allOf"
|
193
|
+
*
|
194
|
+
* @param {SchemaType} rootSchema
|
195
|
+
* @param {ValuesType} values
|
196
|
+
* @param {ParamsType} params
|
197
|
+
* @returns {ZashikiType}
|
319
198
|
*/
|
320
|
-
export function
|
199
|
+
export function transformStringForAllOf (rootSchema, values, params) {
|
321
200
|
/*
|
322
|
-
* log('
|
201
|
+
* log('transformStringForAllOf')
|
323
202
|
*/
|
324
203
|
|
325
|
-
const {
|
326
|
-
|
204
|
+
const {
|
205
|
+
allOf = [],
|
206
|
+
...schemaProps
|
207
|
+
} = rootSchema
|
208
|
+
|
209
|
+
/**
|
210
|
+
* @type {SchemaType}
|
211
|
+
*/
|
212
|
+
const itemSchema = allOf.filter(isObject).reduce(toSchema, structuredClone(schemaProps)) // initialise with `rest`
|
327
213
|
|
328
|
-
return
|
214
|
+
return renderStringForAllOf(itemSchema, values, getRenderParamsForAllOf(rootSchema, params))
|
329
215
|
}
|
330
216
|
|
331
|
-
|
217
|
+
/**
|
332
218
|
* Root schema
|
219
|
+
*
|
220
|
+
* @link https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.3
|
221
|
+
*
|
222
|
+
* @param {SchemaType} rootSchema
|
223
|
+
* @param {ValuesType} values
|
224
|
+
* @param {ParamsType} params
|
225
|
+
* @returns {ZashikiType}
|
333
226
|
*/
|
334
|
-
|
335
|
-
export function transformNull (rootSchema, values, params) {
|
227
|
+
export function transformString (rootSchema, values, params) {
|
336
228
|
/*
|
337
|
-
* log('
|
229
|
+
* log('transformString')
|
338
230
|
*/
|
339
231
|
|
340
232
|
if (hasEnum(rootSchema)) {
|
341
|
-
return
|
233
|
+
return transformStringForEnum(rootSchema, values, params)
|
342
234
|
} else {
|
343
235
|
if (hasAnyOf(rootSchema)) {
|
344
|
-
return
|
236
|
+
return transformStringForAnyOf(rootSchema, values, params)
|
345
237
|
} else {
|
346
238
|
if (hasOneOf(rootSchema)) {
|
347
|
-
return
|
239
|
+
return transformStringForOneOf(rootSchema, values, params)
|
348
240
|
} else {
|
349
241
|
if (hasAllOf(rootSchema)) {
|
350
|
-
return
|
242
|
+
return transformStringForAllOf(rootSchema, values, params)
|
351
243
|
}
|
352
244
|
}
|
353
245
|
}
|
354
246
|
}
|
355
247
|
|
356
|
-
return
|
248
|
+
return renderString(rootSchema, values, getRenderParams(rootSchema, params))
|
357
249
|
}
|
358
250
|
|
359
|
-
|
251
|
+
/**
|
360
252
|
* Root schema
|
361
253
|
*
|
362
254
|
* "enum"
|
255
|
+
*
|
256
|
+
* @param {SchemaType} rootSchema
|
257
|
+
* @param {ValuesType} values
|
258
|
+
* @param {ParamsType} params
|
259
|
+
* @returns {ZashikiType}
|
363
260
|
*/
|
364
|
-
export function
|
261
|
+
export function transformNumberForEnum (rootSchema, values, params) {
|
365
262
|
/*
|
366
|
-
* log('
|
263
|
+
* log('transformNumberForEnum')
|
367
264
|
*/
|
368
265
|
|
369
266
|
const {
|
@@ -374,19 +271,24 @@ export function transformBooleanForEnum (rootSchema, values, params) {
|
|
374
271
|
selectedItems = getSelectedItems(values, uri) // uri
|
375
272
|
} = getMetaProps(params, uri)
|
376
273
|
|
377
|
-
const items = getEnum(rootSchema)
|
274
|
+
const { enum: items = [] } = rootSchema // const items = getEnum(rootSchema)
|
378
275
|
|
379
|
-
return
|
276
|
+
return renderNumberForEnum(rootSchema, values, getRenderParamsForEnum(rootSchema, Object.assign(params, { selectedItems, items })))
|
380
277
|
}
|
381
278
|
|
382
|
-
|
279
|
+
/**
|
383
280
|
* Root schema
|
384
281
|
*
|
385
282
|
* "anyOf"
|
283
|
+
*
|
284
|
+
* @param {SchemaType} rootSchema
|
285
|
+
* @param {ValuesType} values
|
286
|
+
* @param {ParamsType} params
|
287
|
+
* @returns {ZashikiType}
|
386
288
|
*/
|
387
|
-
export function
|
289
|
+
export function transformNumberForAnyOf (rootSchema, values, params) {
|
388
290
|
/*
|
389
|
-
* log('
|
291
|
+
* log('transformNumberForAnyOf')
|
390
292
|
*/
|
391
293
|
|
392
294
|
const {
|
@@ -398,19 +300,24 @@ export function transformBooleanForAnyOf (rootSchema, values, params) {
|
|
398
300
|
} = getMetaProps(params, uri)
|
399
301
|
|
400
302
|
const { anyOf = [] } = rootSchema
|
401
|
-
const items = anyOf.map(
|
303
|
+
const items = anyOf.filter(isObject).map(mapTransformNumberByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
402
304
|
|
403
|
-
return
|
305
|
+
return renderNumberForAnyOf(rootSchema, values, getRenderParamsForAnyOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
404
306
|
}
|
405
307
|
|
406
|
-
|
308
|
+
/**
|
407
309
|
* Root schema
|
408
310
|
*
|
409
311
|
* "oneOf"
|
312
|
+
*
|
313
|
+
* @param {SchemaType} rootSchema
|
314
|
+
* @param {ValuesType} values
|
315
|
+
* @param {ParamsType} params
|
316
|
+
* @returns {ZashikiType}
|
410
317
|
*/
|
411
|
-
export function
|
318
|
+
export function transformNumberForOneOf (rootSchema, values, params) {
|
412
319
|
/*
|
413
|
-
* log('
|
320
|
+
* log('transformNumberForOneOf')
|
414
321
|
*/
|
415
322
|
|
416
323
|
const {
|
@@ -422,63 +329,86 @@ export function transformBooleanForOneOf (rootSchema, values, params) {
|
|
422
329
|
} = getMetaProps(params, uri)
|
423
330
|
|
424
331
|
const { oneOf = [] } = rootSchema
|
425
|
-
const items = oneOf.map(
|
332
|
+
const items = oneOf.filter(isObject).map(mapTransformNumberByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
426
333
|
|
427
|
-
return
|
334
|
+
return renderNumberForOneOf(rootSchema, values, getRenderParamsForOneOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
428
335
|
}
|
429
336
|
|
430
|
-
|
337
|
+
/**
|
431
338
|
* Root schema
|
432
339
|
*
|
433
340
|
* "allOf"
|
341
|
+
*
|
342
|
+
* @param {SchemaType} rootSchema
|
343
|
+
* @param {ValuesType} values
|
344
|
+
* @param {ParamsType} params
|
345
|
+
* @returns {ZashikiType}
|
434
346
|
*/
|
435
|
-
export function
|
347
|
+
export function transformNumberForAllOf (rootSchema, values, params) {
|
436
348
|
/*
|
437
|
-
* log('
|
349
|
+
* log('transformNumberForAllOf')
|
438
350
|
*/
|
439
351
|
|
440
|
-
const {
|
441
|
-
|
352
|
+
const {
|
353
|
+
allOf = [],
|
354
|
+
...schemaProps
|
355
|
+
} = rootSchema
|
356
|
+
|
357
|
+
/**
|
358
|
+
* @type {SchemaType}
|
359
|
+
*/
|
360
|
+
const itemSchema = allOf.filter(isObject).reduce(toSchema, structuredClone(schemaProps)) // initialise with `rest`
|
442
361
|
|
443
|
-
return
|
362
|
+
return renderNumberForAllOf(itemSchema, values, getRenderParamsForAllOf(rootSchema, params))
|
444
363
|
}
|
445
364
|
|
446
|
-
|
365
|
+
/**
|
447
366
|
* Root schema
|
367
|
+
*
|
368
|
+
* @link https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.1
|
369
|
+
*
|
370
|
+
* @param {SchemaType} rootSchema
|
371
|
+
* @param {ValuesType} values
|
372
|
+
* @param {ParamsType} params
|
373
|
+
* @returns {ZashikiType}
|
448
374
|
*/
|
449
|
-
|
450
|
-
export function transformBoolean (rootSchema, values, params) {
|
375
|
+
export function transformNumber (rootSchema, values, params) {
|
451
376
|
/*
|
452
|
-
* log('
|
377
|
+
* log('transformNumber')
|
453
378
|
*/
|
454
379
|
|
455
380
|
if (hasEnum(rootSchema)) {
|
456
|
-
return
|
381
|
+
return transformNumberForEnum(rootSchema, values, params)
|
457
382
|
} else {
|
458
383
|
if (hasAnyOf(rootSchema)) {
|
459
|
-
return
|
384
|
+
return transformNumberForAnyOf(rootSchema, values, params)
|
460
385
|
} else {
|
461
386
|
if (hasOneOf(rootSchema)) {
|
462
|
-
return
|
387
|
+
return transformNumberForOneOf(rootSchema, values, params)
|
463
388
|
} else {
|
464
389
|
if (hasAllOf(rootSchema)) {
|
465
|
-
return
|
390
|
+
return transformNumberForAllOf(rootSchema, values, params)
|
466
391
|
}
|
467
392
|
}
|
468
393
|
}
|
469
394
|
}
|
470
395
|
|
471
|
-
return
|
396
|
+
return renderNumber(rootSchema, values, getRenderParams(rootSchema, params))
|
472
397
|
}
|
473
398
|
|
474
|
-
|
399
|
+
/**
|
475
400
|
* Root schema
|
476
401
|
*
|
477
402
|
* "enum"
|
403
|
+
*
|
404
|
+
* @param {SchemaType} rootSchema
|
405
|
+
* @param {ValuesType} values
|
406
|
+
* @param {ParamsType} params
|
407
|
+
* @returns {ZashikiType}
|
478
408
|
*/
|
479
|
-
export function
|
409
|
+
export function transformArrayForEnum (rootSchema, values, params) {
|
480
410
|
/*
|
481
|
-
* log('
|
411
|
+
* log('renderArrayForEnum')
|
482
412
|
*/
|
483
413
|
|
484
414
|
const {
|
@@ -489,19 +419,24 @@ export function transformObjectForEnum (rootSchema, values, params) {
|
|
489
419
|
selectedItems = getSelectedItems(values, uri) // uri
|
490
420
|
} = getMetaProps(params, uri)
|
491
421
|
|
492
|
-
const items = getEnum(rootSchema)
|
422
|
+
const { enum: items = [] } = rootSchema // const items = getEnum(rootSchema)
|
493
423
|
|
494
|
-
return
|
424
|
+
return renderArrayForEnum(rootSchema, values, getRenderParamsForEnum(rootSchema, Object.assign(params, { selectedItems, items })))
|
495
425
|
}
|
496
426
|
|
497
|
-
|
427
|
+
/**
|
498
428
|
* Root schema
|
499
429
|
*
|
500
430
|
* "anyOf"
|
431
|
+
*
|
432
|
+
* @param {SchemaType} rootSchema
|
433
|
+
* @param {ValuesType} values
|
434
|
+
* @param {ParamsType} params
|
435
|
+
* @returns {ZashikiType}
|
501
436
|
*/
|
502
|
-
export function
|
437
|
+
export function transformArrayForAnyOf (rootSchema, values, params) {
|
503
438
|
/*
|
504
|
-
* log('
|
439
|
+
* log('transformArrayForAnyOf')
|
505
440
|
*/
|
506
441
|
|
507
442
|
const {
|
@@ -513,19 +448,24 @@ export function transformObjectForAnyOf (rootSchema, values, params) {
|
|
513
448
|
} = getMetaProps(params, uri)
|
514
449
|
|
515
450
|
const { anyOf = [] } = rootSchema
|
516
|
-
const items = anyOf.map(
|
451
|
+
const items = anyOf.filter(isObject).map(mapTransformArrayByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
517
452
|
|
518
|
-
return
|
453
|
+
return renderArrayForAnyOf(rootSchema, values, getRenderParamsForAnyOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
519
454
|
}
|
520
455
|
|
521
|
-
|
456
|
+
/**
|
522
457
|
* Root schema
|
523
458
|
*
|
524
459
|
* "oneOf"
|
460
|
+
*
|
461
|
+
* @param {SchemaType} rootSchema
|
462
|
+
* @param {ValuesType} values
|
463
|
+
* @param {ParamsType} params
|
464
|
+
* @returns {ZashikiType}
|
525
465
|
*/
|
526
|
-
export function
|
466
|
+
export function transformArrayForOneOf (rootSchema, values, params) {
|
527
467
|
/*
|
528
|
-
* log('
|
468
|
+
* log('transformArrayForOneOf')
|
529
469
|
*/
|
530
470
|
|
531
471
|
const {
|
@@ -537,78 +477,106 @@ export function transformObjectForOneOf (rootSchema, values, params) {
|
|
537
477
|
} = getMetaProps(params, uri)
|
538
478
|
|
539
479
|
const { oneOf = [] } = rootSchema
|
540
|
-
const items = oneOf.map(
|
480
|
+
const items = oneOf.filter(isObject).map(mapTransformArrayByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
541
481
|
|
542
|
-
return
|
482
|
+
return renderArrayForOneOf(rootSchema, values, getRenderParamsForOneOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
543
483
|
}
|
544
484
|
|
545
|
-
|
485
|
+
/**
|
546
486
|
* Root schema
|
547
487
|
*
|
548
488
|
* "allOf"
|
489
|
+
*
|
490
|
+
* @param {SchemaType} rootSchema
|
491
|
+
* @param {ValuesType} values
|
492
|
+
* @param {ParamsType} params
|
493
|
+
* @returns {ZashikiType}
|
549
494
|
*/
|
550
|
-
export function
|
495
|
+
export function transformArrayForAllOf (rootSchema, values, params) {
|
551
496
|
/*
|
552
|
-
* log('
|
497
|
+
* log('transformArrayForAllOf')
|
553
498
|
*/
|
554
499
|
|
555
|
-
const {
|
556
|
-
|
500
|
+
const {
|
501
|
+
allOf = [],
|
502
|
+
...schemaProps
|
503
|
+
} = rootSchema
|
504
|
+
|
505
|
+
/**
|
506
|
+
* @type {SchemaType}
|
507
|
+
*/
|
508
|
+
const itemSchema = allOf.filter(isObject).reduce(toSchema, structuredClone(schemaProps)) // initialise with `rest`
|
557
509
|
|
558
|
-
return
|
510
|
+
return renderArrayForAllOf(itemSchema, values, getRenderParamsForAllOf(rootSchema, params))
|
559
511
|
}
|
560
512
|
|
561
|
-
|
513
|
+
/**
|
562
514
|
* Root schema
|
515
|
+
*
|
516
|
+
* @link https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.4
|
517
|
+
*
|
518
|
+
* @param {SchemaType} rootSchema
|
519
|
+
* @param {ValuesType} values
|
520
|
+
* @param {ParamsType} params
|
521
|
+
* @returns {ZashikiType}
|
563
522
|
*/
|
564
|
-
|
565
|
-
export function transformObject (rootSchema, values, params) {
|
523
|
+
export function transformArray (rootSchema, values, params) {
|
566
524
|
/*
|
567
|
-
* log('
|
525
|
+
* log('transformArray')
|
568
526
|
*/
|
569
527
|
|
570
528
|
if (hasEnum(rootSchema)) {
|
571
|
-
return
|
529
|
+
return transformArrayForEnum(rootSchema, values, params)
|
572
530
|
} else {
|
573
531
|
if (hasAnyOf(rootSchema)) {
|
574
|
-
return
|
532
|
+
return transformArrayForAnyOf(rootSchema, values, params)
|
575
533
|
} else {
|
576
534
|
if (hasOneOf(rootSchema)) {
|
577
|
-
return
|
535
|
+
return transformArrayForOneOf(rootSchema, values, params)
|
578
536
|
} else {
|
579
537
|
if (hasAllOf(rootSchema)) {
|
580
|
-
return
|
538
|
+
return transformArrayForAllOf(rootSchema, values, params)
|
581
539
|
}
|
582
540
|
}
|
583
541
|
}
|
584
542
|
}
|
585
543
|
|
586
544
|
const {
|
587
|
-
|
588
|
-
required = []
|
545
|
+
items = [] // array or object
|
589
546
|
} = rootSchema
|
590
547
|
|
591
|
-
|
592
|
-
|
593
|
-
|
548
|
+
if (isArray(items)) {
|
549
|
+
const fields = (
|
550
|
+
items.map(mapTransformByIndex(rootSchema, values, Object.assign(structuredClone(params), { parentUri: '#/' })))
|
551
|
+
)
|
594
552
|
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
553
|
+
return renderArray(rootSchema, values, getRenderParams(rootSchema, Object.assign(params, { fields })))
|
554
|
+
} else {
|
555
|
+
if (isObject(items)) {
|
556
|
+
const fields = [
|
557
|
+
getTransformByIndex(items, rootSchema, values, Object.assign(structuredClone(params), { parentUri: '#/' }))
|
558
|
+
]
|
559
|
+
|
560
|
+
return renderArray(rootSchema, values, getRenderParams(rootSchema, Object.assign(params, { fields })))
|
561
|
+
}
|
562
|
+
}
|
600
563
|
|
601
|
-
|
564
|
+
throw new Error('Invalid `array`')
|
602
565
|
}
|
603
566
|
|
604
|
-
|
567
|
+
/**
|
605
568
|
* Root schema
|
606
569
|
*
|
607
570
|
* "enum"
|
571
|
+
*
|
572
|
+
* @param {SchemaType} rootSchema
|
573
|
+
* @param {ValuesType} values
|
574
|
+
* @param {ParamsType} params
|
575
|
+
* @returns {ZashikiType}
|
608
576
|
*/
|
609
|
-
export function
|
577
|
+
export function transformObjectForEnum (rootSchema, values, params) {
|
610
578
|
/*
|
611
|
-
* log('
|
579
|
+
* log('renderObjectForEnum')
|
612
580
|
*/
|
613
581
|
|
614
582
|
const {
|
@@ -619,19 +587,24 @@ export function transformArrayForEnum (rootSchema, values, params) {
|
|
619
587
|
selectedItems = getSelectedItems(values, uri) // uri
|
620
588
|
} = getMetaProps(params, uri)
|
621
589
|
|
622
|
-
const items = getEnum(rootSchema)
|
590
|
+
const { enum: items = [] } = rootSchema // const items = getEnum(rootSchema)
|
623
591
|
|
624
|
-
return
|
592
|
+
return renderObjectForEnum(rootSchema, values, getRenderParamsForEnum(rootSchema, Object.assign(params, { selectedItems, items })))
|
625
593
|
}
|
626
594
|
|
627
|
-
|
595
|
+
/**
|
628
596
|
* Root schema
|
629
597
|
*
|
630
598
|
* "anyOf"
|
599
|
+
*
|
600
|
+
* @param {SchemaType} rootSchema
|
601
|
+
* @param {ValuesType} values
|
602
|
+
* @param {ParamsType} params
|
603
|
+
* @returns {ZashikiType}
|
631
604
|
*/
|
632
|
-
export function
|
605
|
+
export function transformObjectForAnyOf (rootSchema, values, params) {
|
633
606
|
/*
|
634
|
-
* log('
|
607
|
+
* log('transformObjectForAnyOf')
|
635
608
|
*/
|
636
609
|
|
637
610
|
const {
|
@@ -643,19 +616,24 @@ export function transformArrayForAnyOf (rootSchema, values, params) {
|
|
643
616
|
} = getMetaProps(params, uri)
|
644
617
|
|
645
618
|
const { anyOf = [] } = rootSchema
|
646
|
-
const items = anyOf.map(
|
619
|
+
const items = anyOf.filter(isObject).map(mapTransformObjectByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
647
620
|
|
648
|
-
return
|
621
|
+
return renderObjectForAnyOf(rootSchema, values, getRenderParamsForAnyOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
649
622
|
}
|
650
623
|
|
651
|
-
|
624
|
+
/**
|
652
625
|
* Root schema
|
653
626
|
*
|
654
627
|
* "oneOf"
|
628
|
+
*
|
629
|
+
* @param {SchemaType} rootSchema
|
630
|
+
* @param {ValuesType} values
|
631
|
+
* @param {ParamsType} params
|
632
|
+
* @returns {ZashikiType}
|
655
633
|
*/
|
656
|
-
export function
|
634
|
+
export function transformObjectForOneOf (rootSchema, values, params) {
|
657
635
|
/*
|
658
|
-
* log('
|
636
|
+
* log('transformObjectForOneOf')
|
659
637
|
*/
|
660
638
|
|
661
639
|
const {
|
@@ -667,81 +645,101 @@ export function transformArrayForOneOf (rootSchema, values, params) {
|
|
667
645
|
} = getMetaProps(params, uri)
|
668
646
|
|
669
647
|
const { oneOf = [] } = rootSchema
|
670
|
-
const items = oneOf.map(
|
648
|
+
const items = oneOf.filter(isObject).map(mapTransformObjectByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
671
649
|
|
672
|
-
return
|
650
|
+
return renderObjectForOneOf(rootSchema, values, getRenderParamsForOneOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
673
651
|
}
|
674
652
|
|
675
|
-
|
653
|
+
/**
|
676
654
|
* Root schema
|
677
655
|
*
|
678
656
|
* "allOf"
|
657
|
+
*
|
658
|
+
* @param {SchemaType} rootSchema
|
659
|
+
* @param {ValuesType} values
|
660
|
+
* @param {ParamsType} params
|
661
|
+
* @returns {ZashikiType}
|
679
662
|
*/
|
680
|
-
export function
|
663
|
+
export function transformObjectForAllOf (rootSchema, values, params) {
|
681
664
|
/*
|
682
|
-
* log('
|
665
|
+
* log('transformObjectForAllOf')
|
683
666
|
*/
|
684
667
|
|
685
|
-
const {
|
686
|
-
|
668
|
+
const {
|
669
|
+
allOf = [],
|
670
|
+
...schemaProps
|
671
|
+
} = rootSchema
|
672
|
+
|
673
|
+
/**
|
674
|
+
* @type {SchemaType}
|
675
|
+
*/
|
676
|
+
const itemSchema = allOf.filter(isObject).reduce(toSchema, structuredClone(schemaProps)) // initialise with `rest`
|
687
677
|
|
688
|
-
return
|
678
|
+
return renderObjectForAllOf(itemSchema, values, getRenderParamsForAllOf(rootSchema, params))
|
689
679
|
}
|
690
680
|
|
691
|
-
|
681
|
+
/**
|
692
682
|
* Root schema
|
683
|
+
*
|
684
|
+
* @link https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.5
|
685
|
+
*
|
686
|
+
* @param {SchemaType} rootSchema
|
687
|
+
* @param {ValuesType} values
|
688
|
+
* @param {ParamsType} params
|
689
|
+
* @returns {ZashikiType}
|
693
690
|
*/
|
694
|
-
|
695
|
-
export function transformArray (rootSchema, values, params) {
|
691
|
+
export function transformObject (rootSchema, values, params) {
|
696
692
|
/*
|
697
|
-
* log('
|
693
|
+
* log('transformObject')
|
698
694
|
*/
|
699
695
|
|
700
696
|
if (hasEnum(rootSchema)) {
|
701
|
-
return
|
697
|
+
return transformObjectForEnum(rootSchema, values, params)
|
702
698
|
} else {
|
703
699
|
if (hasAnyOf(rootSchema)) {
|
704
|
-
return
|
700
|
+
return transformObjectForAnyOf(rootSchema, values, params)
|
705
701
|
} else {
|
706
702
|
if (hasOneOf(rootSchema)) {
|
707
|
-
return
|
703
|
+
return transformObjectForOneOf(rootSchema, values, params)
|
708
704
|
} else {
|
709
705
|
if (hasAllOf(rootSchema)) {
|
710
|
-
return
|
706
|
+
return transformObjectForAllOf(rootSchema, values, params)
|
711
707
|
}
|
712
708
|
}
|
713
709
|
}
|
714
710
|
}
|
715
711
|
|
716
712
|
const {
|
717
|
-
|
713
|
+
properties = {},
|
714
|
+
required = []
|
718
715
|
} = rootSchema
|
719
716
|
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
)
|
717
|
+
const {
|
718
|
+
uri = '#/'
|
719
|
+
} = params
|
724
720
|
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
]
|
721
|
+
const fields = (
|
722
|
+
Object
|
723
|
+
.entries(properties)
|
724
|
+
.map(mapTransformByKey(rootSchema, values, Object.assign(structuredClone(params), { parentUri: uri, required })))
|
725
|
+
)
|
731
726
|
|
732
|
-
|
733
|
-
}
|
734
|
-
}
|
727
|
+
return renderObject(rootSchema, values, getRenderParams(rootSchema, Object.assign(params, { fields })))
|
735
728
|
}
|
736
729
|
|
737
|
-
|
730
|
+
/**
|
738
731
|
* Root schema
|
739
732
|
*
|
740
733
|
* "enum"
|
734
|
+
*
|
735
|
+
* @param {SchemaType} rootSchema
|
736
|
+
* @param {ValuesType} values
|
737
|
+
* @param {ParamsType} params
|
738
|
+
* @returns {ZashikiType}
|
741
739
|
*/
|
742
|
-
export function
|
740
|
+
export function transformBooleanForEnum (rootSchema, values, params) {
|
743
741
|
/*
|
744
|
-
* log('
|
742
|
+
* log('transformBooleanForEnum')
|
745
743
|
*/
|
746
744
|
|
747
745
|
const {
|
@@ -752,19 +750,24 @@ export function transformNumberForEnum (rootSchema, values, params) {
|
|
752
750
|
selectedItems = getSelectedItems(values, uri) // uri
|
753
751
|
} = getMetaProps(params, uri)
|
754
752
|
|
755
|
-
const items = getEnum(rootSchema)
|
753
|
+
const { enum: items = [] } = rootSchema // const items = getEnum(rootSchema)
|
756
754
|
|
757
|
-
return
|
755
|
+
return renderBooleanForEnum(rootSchema, values, getRenderParamsForEnum(rootSchema, Object.assign(params, { selectedItems, items })))
|
758
756
|
}
|
759
757
|
|
760
|
-
|
758
|
+
/**
|
761
759
|
* Root schema
|
762
760
|
*
|
763
761
|
* "anyOf"
|
762
|
+
*
|
763
|
+
* @param {SchemaType} rootSchema
|
764
|
+
* @param {ValuesType} values
|
765
|
+
* @param {ParamsType} params
|
766
|
+
* @returns {ZashikiType}
|
764
767
|
*/
|
765
|
-
export function
|
768
|
+
export function transformBooleanForAnyOf (rootSchema, values, params) {
|
766
769
|
/*
|
767
|
-
* log('
|
770
|
+
* log('transformBooleanForAnyOf')
|
768
771
|
*/
|
769
772
|
|
770
773
|
const {
|
@@ -776,19 +779,24 @@ export function transformNumberForAnyOf (rootSchema, values, params) {
|
|
776
779
|
} = getMetaProps(params, uri)
|
777
780
|
|
778
781
|
const { anyOf = [] } = rootSchema
|
779
|
-
const items = anyOf.map(
|
782
|
+
const items = anyOf.filter(isObject).map(mapTransformBooleanByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
780
783
|
|
781
|
-
return
|
784
|
+
return renderBooleanForAnyOf(rootSchema, values, getRenderParamsForAnyOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
782
785
|
}
|
783
786
|
|
784
|
-
|
787
|
+
/**
|
785
788
|
* Root schema
|
786
789
|
*
|
787
790
|
* "oneOf"
|
791
|
+
*
|
792
|
+
* @param {SchemaType} rootSchema
|
793
|
+
* @param {ValuesType} values
|
794
|
+
* @param {ParamsType} params
|
795
|
+
* @returns {ZashikiType}
|
788
796
|
*/
|
789
|
-
export function
|
797
|
+
export function transformBooleanForOneOf (rootSchema, values, params) {
|
790
798
|
/*
|
791
|
-
* log('
|
799
|
+
* log('transformBooleanForOneOf')
|
792
800
|
*/
|
793
801
|
|
794
802
|
const {
|
@@ -800,63 +808,86 @@ export function transformNumberForOneOf (rootSchema, values, params) {
|
|
800
808
|
} = getMetaProps(params, uri)
|
801
809
|
|
802
810
|
const { oneOf = [] } = rootSchema
|
803
|
-
const items = oneOf.map(
|
811
|
+
const items = oneOf.filter(isObject).map(mapTransformBooleanByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
804
812
|
|
805
|
-
return
|
813
|
+
return renderBooleanForOneOf(rootSchema, values, getRenderParamsForOneOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
806
814
|
}
|
807
815
|
|
808
|
-
|
816
|
+
/**
|
809
817
|
* Root schema
|
810
818
|
*
|
811
819
|
* "allOf"
|
820
|
+
*
|
821
|
+
* @param {SchemaType} rootSchema
|
822
|
+
* @param {ValuesType} values
|
823
|
+
* @param {ParamsType} params
|
824
|
+
* @returns {ZashikiType}
|
812
825
|
*/
|
813
|
-
export function
|
826
|
+
export function transformBooleanForAllOf (rootSchema, values, params) {
|
814
827
|
/*
|
815
|
-
* log('
|
828
|
+
* log('transformBooleanForAllOf')
|
816
829
|
*/
|
817
830
|
|
818
|
-
const {
|
819
|
-
|
831
|
+
const {
|
832
|
+
allOf = [],
|
833
|
+
...schemaProps
|
834
|
+
} = rootSchema
|
835
|
+
|
836
|
+
/**
|
837
|
+
* @type {SchemaType}
|
838
|
+
*/
|
839
|
+
const itemSchema = allOf.filter(isObject).reduce(toSchema, structuredClone(schemaProps)) // initialise with `rest`
|
820
840
|
|
821
|
-
return
|
841
|
+
return renderBooleanForAllOf(itemSchema, values, getRenderParamsForAllOf(rootSchema, params))
|
822
842
|
}
|
823
843
|
|
824
|
-
|
844
|
+
/**
|
825
845
|
* Root schema
|
846
|
+
*
|
847
|
+
* @link https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6
|
848
|
+
*
|
849
|
+
* @param {SchemaType} rootSchema
|
850
|
+
* @param {ValuesType} values
|
851
|
+
* @param {ParamsType} params
|
852
|
+
* @returns {ZashikiType}
|
826
853
|
*/
|
827
|
-
|
828
|
-
export function transformNumber (rootSchema, values, params) {
|
854
|
+
export function transformBoolean (rootSchema, values, params) {
|
829
855
|
/*
|
830
|
-
* log('
|
856
|
+
* log('transformBoolean')
|
831
857
|
*/
|
832
858
|
|
833
859
|
if (hasEnum(rootSchema)) {
|
834
|
-
return
|
860
|
+
return transformBooleanForEnum(rootSchema, values, params)
|
835
861
|
} else {
|
836
862
|
if (hasAnyOf(rootSchema)) {
|
837
|
-
return
|
863
|
+
return transformBooleanForAnyOf(rootSchema, values, params)
|
838
864
|
} else {
|
839
865
|
if (hasOneOf(rootSchema)) {
|
840
|
-
return
|
866
|
+
return transformBooleanForOneOf(rootSchema, values, params)
|
841
867
|
} else {
|
842
868
|
if (hasAllOf(rootSchema)) {
|
843
|
-
return
|
869
|
+
return transformBooleanForAllOf(rootSchema, values, params)
|
844
870
|
}
|
845
871
|
}
|
846
872
|
}
|
847
873
|
}
|
848
874
|
|
849
|
-
return
|
875
|
+
return renderBoolean(rootSchema, values, getRenderParams(rootSchema, params))
|
850
876
|
}
|
851
877
|
|
852
|
-
|
878
|
+
/**
|
853
879
|
* Root schema
|
854
880
|
*
|
855
881
|
* "enum"
|
882
|
+
*
|
883
|
+
* @param {SchemaType} rootSchema
|
884
|
+
* @param {ValuesType} values
|
885
|
+
* @param {ParamsType} params
|
886
|
+
* @returns {ZashikiType}
|
856
887
|
*/
|
857
|
-
export function
|
888
|
+
export function transformNullForEnum (rootSchema, values, params) {
|
858
889
|
/*
|
859
|
-
* log('
|
890
|
+
* log('transformNullForEnum')
|
860
891
|
*/
|
861
892
|
|
862
893
|
const {
|
@@ -867,19 +898,24 @@ export function transformStringForEnum (rootSchema, values, params) {
|
|
867
898
|
selectedItems = getSelectedItems(values, uri) // uri
|
868
899
|
} = getMetaProps(params, uri)
|
869
900
|
|
870
|
-
const items = getEnum(rootSchema)
|
901
|
+
const { enum: items = [] } = rootSchema // const items = getEnum(rootSchema)
|
871
902
|
|
872
|
-
return
|
903
|
+
return renderNullForEnum(rootSchema, values, getRenderParamsForEnum(rootSchema, Object.assign(params, { selectedItems, items })))
|
873
904
|
}
|
874
905
|
|
875
|
-
|
906
|
+
/**
|
876
907
|
* Root schema
|
877
908
|
*
|
878
909
|
* "anyOf"
|
910
|
+
*
|
911
|
+
* @param {SchemaType} rootSchema
|
912
|
+
* @param {ValuesType} values
|
913
|
+
* @param {ParamsType} params
|
914
|
+
* @returns {ZashikiType}
|
879
915
|
*/
|
880
|
-
export function
|
916
|
+
export function transformNullForAnyOf (rootSchema, values, params) {
|
881
917
|
/*
|
882
|
-
* log('
|
918
|
+
* log('transformNullForAnyOf')
|
883
919
|
*/
|
884
920
|
|
885
921
|
const {
|
@@ -891,19 +927,24 @@ export function transformStringForAnyOf (rootSchema, values, params) {
|
|
891
927
|
} = getMetaProps(params, uri)
|
892
928
|
|
893
929
|
const { anyOf = [] } = rootSchema
|
894
|
-
const items = anyOf.map(
|
930
|
+
const items = anyOf.filter(isObject).map(mapTransformNullByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
895
931
|
|
896
|
-
return
|
932
|
+
return renderNullForAnyOf(rootSchema, values, getRenderParamsForAnyOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
897
933
|
}
|
898
934
|
|
899
|
-
|
935
|
+
/**
|
900
936
|
* Root schema
|
901
937
|
*
|
902
938
|
* "oneOf"
|
939
|
+
*
|
940
|
+
* @param {SchemaType} rootSchema
|
941
|
+
* @param {ValuesType} values
|
942
|
+
* @param {ParamsType} params
|
943
|
+
* @returns {ZashikiType}
|
903
944
|
*/
|
904
|
-
export function
|
945
|
+
export function transformNullForOneOf (rootSchema, values, params) {
|
905
946
|
/*
|
906
|
-
* log('
|
947
|
+
* log('transformNullForOneOf')
|
907
948
|
*/
|
908
949
|
|
909
950
|
const {
|
@@ -915,55 +956,79 @@ export function transformStringForOneOf (rootSchema, values, params) {
|
|
915
956
|
} = getMetaProps(params, uri)
|
916
957
|
|
917
958
|
const { oneOf = [] } = rootSchema
|
918
|
-
const items = oneOf.map(
|
959
|
+
const items = oneOf.filter(isObject).map(mapTransformNullByIndex(rootSchema, values, Object.assign(structuredClone(params), { selectedItems, parentUri: uri })))
|
919
960
|
|
920
|
-
return
|
961
|
+
return renderNullForOneOf(rootSchema, values, getRenderParamsForOneOf(rootSchema, Object.assign(params, { selectedItems, items })))
|
921
962
|
}
|
922
963
|
|
923
|
-
|
964
|
+
/**
|
924
965
|
* Root schema
|
925
966
|
*
|
926
967
|
* "allOf"
|
968
|
+
*
|
969
|
+
* @param {SchemaType} rootSchema
|
970
|
+
* @param {ValuesType} values
|
971
|
+
* @param {ParamsType} params
|
972
|
+
* @returns {ZashikiType}
|
927
973
|
*/
|
928
|
-
export function
|
974
|
+
export function transformNullForAllOf (rootSchema, values, params) {
|
929
975
|
/*
|
930
|
-
* log('
|
976
|
+
* log('transformNullForAllOf')
|
931
977
|
*/
|
932
978
|
|
933
|
-
const {
|
934
|
-
|
979
|
+
const {
|
980
|
+
allOf = [],
|
981
|
+
...schemaProps
|
982
|
+
} = rootSchema
|
983
|
+
|
984
|
+
/**
|
985
|
+
* @type {SchemaType}
|
986
|
+
*/
|
987
|
+
const itemSchema = allOf.filter(isObject).reduce(toSchema, structuredClone(schemaProps)) // initialise with `rest`
|
935
988
|
|
936
|
-
return
|
989
|
+
return renderNullForAllOf(itemSchema, values, getRenderParamsForAllOf(rootSchema, params))
|
937
990
|
}
|
938
991
|
|
939
|
-
|
992
|
+
/**
|
940
993
|
* Root schema
|
994
|
+
*
|
995
|
+
* @link https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6
|
996
|
+
*
|
997
|
+
* @param {SchemaType} rootSchema
|
998
|
+
* @param {ValuesType} values
|
999
|
+
* @param {ParamsType} params
|
1000
|
+
* @returns {ZashikiType}
|
941
1001
|
*/
|
942
|
-
|
943
|
-
export function transformString (rootSchema, values, params) {
|
1002
|
+
export function transformNull (rootSchema, values, params) {
|
944
1003
|
/*
|
945
|
-
* log('
|
1004
|
+
* log('transformNull')
|
946
1005
|
*/
|
947
1006
|
|
948
1007
|
if (hasEnum(rootSchema)) {
|
949
|
-
return
|
1008
|
+
return transformNullForEnum(rootSchema, values, params)
|
950
1009
|
} else {
|
951
1010
|
if (hasAnyOf(rootSchema)) {
|
952
|
-
return
|
1011
|
+
return transformNullForAnyOf(rootSchema, values, params)
|
953
1012
|
} else {
|
954
1013
|
if (hasOneOf(rootSchema)) {
|
955
|
-
return
|
1014
|
+
return transformNullForOneOf(rootSchema, values, params)
|
956
1015
|
} else {
|
957
1016
|
if (hasAllOf(rootSchema)) {
|
958
|
-
return
|
1017
|
+
return transformNullForAllOf(rootSchema, values, params)
|
959
1018
|
}
|
960
1019
|
}
|
961
1020
|
}
|
962
1021
|
}
|
963
1022
|
|
964
|
-
return
|
1023
|
+
return renderNull(rootSchema, values, getRenderParams(rootSchema, params))
|
965
1024
|
}
|
966
1025
|
|
1026
|
+
/**
|
1027
|
+
* @param {SchemaType} [rootSchema]
|
1028
|
+
* @param {ValuesType} [values]
|
1029
|
+
* @param {ParamsType} [params]
|
1030
|
+
* @returns {ZashikiType}
|
1031
|
+
*/
|
967
1032
|
export default function toZashiki (rootSchema = {}, values = {}, params = {}) {
|
968
1033
|
log('toZashiki')
|
969
1034
|
|
@@ -971,25 +1036,24 @@ export default function toZashiki (rootSchema = {}, values = {}, params = {}) {
|
|
971
1036
|
|
972
1037
|
// https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.4.2.1
|
973
1038
|
switch (type) {
|
974
|
-
case '
|
975
|
-
return
|
976
|
-
|
977
|
-
case 'boolean':
|
978
|
-
return transformBoolean(rootSchema, values, params)
|
1039
|
+
case 'string':
|
1040
|
+
return transformString(rootSchema, values, params)
|
979
1041
|
|
980
|
-
case '
|
981
|
-
return
|
1042
|
+
case 'number':
|
1043
|
+
return transformNumber(rootSchema, values, params)
|
982
1044
|
|
983
1045
|
case 'array':
|
984
1046
|
return transformArray(rootSchema, values, params)
|
985
1047
|
|
986
|
-
case '
|
987
|
-
return
|
1048
|
+
case 'object':
|
1049
|
+
return transformObject(rootSchema, values, params)
|
988
1050
|
|
989
|
-
case '
|
990
|
-
return
|
1051
|
+
case 'boolean':
|
1052
|
+
return transformBoolean(rootSchema, values, params)
|
991
1053
|
|
992
|
-
|
993
|
-
|
1054
|
+
case 'null':
|
1055
|
+
return transformNull(rootSchema, values, params)
|
994
1056
|
}
|
1057
|
+
|
1058
|
+
throw new Error('Schema does not conform to Instance Data Model, https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.4.2.1')
|
995
1059
|
}
|