@squiz/dx-json-schema-lib 1.82.3 → 1.82.5
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/CHANGELOG.md +14 -0
- package/README.md +132 -0
- package/lib/JsonSchemaService.allOf.spec.d.ts +1 -0
- package/lib/JsonSchemaService.allOf.spec.js +528 -0
- package/lib/JsonSchemaService.allOf.spec.js.map +1 -0
- package/lib/JsonSchemaService.d.ts +20 -0
- package/lib/JsonSchemaService.js +165 -1
- package/lib/JsonSchemaService.js.map +1 -1
- package/lib/resolvableTypes/MatrixAsset.d.ts +1 -0
- package/lib/resolvableTypes/MatrixAsset.js +3 -0
- package/lib/resolvableTypes/MatrixAsset.js.map +1 -1
- package/package.json +2 -2
- package/src/JsonSchemaService.allOf.spec.ts +573 -0
- package/src/JsonSchemaService.ts +187 -1
- package/src/resolvableTypes/MatrixAsset.ts +4 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const JsonSchemaService_1 = require("./JsonSchemaService");
|
|
4
|
+
const TypeResolverBuilder_1 = require("./jsonTypeResolution/TypeResolverBuilder");
|
|
5
|
+
const SquizLink_1 = require("./primitiveTypes/SquizLink");
|
|
6
|
+
const SquizImage_1 = require("./primitiveTypes/SquizImage");
|
|
7
|
+
describe('JSONSchemaService - AllOf SquizLink/SquizImage Data Preservation', () => {
|
|
8
|
+
let service;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
const typeResolver = new TypeResolverBuilder_1.TypeResolverBuilder().addPrimitive(SquizLink_1.SquizLinkType).addPrimitive(SquizImage_1.SquizImageType).build();
|
|
11
|
+
service = new JsonSchemaService_1.JSONSchemaService(typeResolver, {
|
|
12
|
+
root: {
|
|
13
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
14
|
+
type: 'object',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('SquizLink Arrays in AllOf Conditional Schemas', () => {
|
|
19
|
+
it('should preserve SquizLink arrays in simple allOf conditions', async () => {
|
|
20
|
+
const schema = {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
content: {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
type: { type: 'string', enum: ['basic', 'advanced'] },
|
|
27
|
+
},
|
|
28
|
+
allOf: [
|
|
29
|
+
{
|
|
30
|
+
if: {
|
|
31
|
+
properties: { type: { const: 'advanced' } },
|
|
32
|
+
},
|
|
33
|
+
then: {
|
|
34
|
+
properties: {
|
|
35
|
+
links: {
|
|
36
|
+
type: 'array',
|
|
37
|
+
items: { type: 'SquizLink' },
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
const inputData = {
|
|
47
|
+
content: {
|
|
48
|
+
type: 'advanced',
|
|
49
|
+
links: [
|
|
50
|
+
{ text: 'Test Link 1', url: 'https://test1.com', target: '_blank' },
|
|
51
|
+
{ text: 'Test Link 2', url: 'https://test2.com', target: '_self' },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
56
|
+
expect(result.content.links).toBeDefined();
|
|
57
|
+
expect(result.content.links).toHaveLength(2);
|
|
58
|
+
expect(result.content.links[0]).toEqual({
|
|
59
|
+
text: 'Test Link 1',
|
|
60
|
+
url: 'https://test1.com',
|
|
61
|
+
target: '_blank',
|
|
62
|
+
});
|
|
63
|
+
expect(result.content.links[1]).toEqual({
|
|
64
|
+
text: 'Test Link 2',
|
|
65
|
+
url: 'https://test2.com',
|
|
66
|
+
target: '_self',
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
it('should handle multiple allOf conditions with different SquizLink arrays', async () => {
|
|
70
|
+
const schema = {
|
|
71
|
+
type: 'object',
|
|
72
|
+
properties: {
|
|
73
|
+
content: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: {
|
|
76
|
+
sectionType: { type: 'string', enum: ['navigation', 'social', 'footer'] },
|
|
77
|
+
},
|
|
78
|
+
allOf: [
|
|
79
|
+
{
|
|
80
|
+
if: {
|
|
81
|
+
properties: { sectionType: { const: 'navigation' } },
|
|
82
|
+
},
|
|
83
|
+
then: {
|
|
84
|
+
properties: {
|
|
85
|
+
navLinks: {
|
|
86
|
+
type: 'array',
|
|
87
|
+
items: { type: 'SquizLink' },
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
if: {
|
|
94
|
+
properties: { sectionType: { const: 'social' } },
|
|
95
|
+
},
|
|
96
|
+
then: {
|
|
97
|
+
properties: {
|
|
98
|
+
socialLinks: {
|
|
99
|
+
type: 'array',
|
|
100
|
+
items: { type: 'SquizLink' },
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
// Test navigation links
|
|
110
|
+
const navData = {
|
|
111
|
+
content: {
|
|
112
|
+
sectionType: 'navigation',
|
|
113
|
+
navLinks: [
|
|
114
|
+
{ text: 'Home', url: '/', target: '_self' },
|
|
115
|
+
{ text: 'About', url: '/about', target: '_self' },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
const navResult = (await service.resolveInput(navData, schema));
|
|
120
|
+
expect(navResult.content.navLinks).toHaveLength(2);
|
|
121
|
+
expect(navResult.content.navLinks[0]).toEqual({ text: 'Home', url: '/', target: '_self' });
|
|
122
|
+
// Test social links
|
|
123
|
+
const socialData = {
|
|
124
|
+
content: {
|
|
125
|
+
sectionType: 'social',
|
|
126
|
+
socialLinks: [
|
|
127
|
+
{ text: 'Facebook', url: 'https://facebook.com', target: '_blank' },
|
|
128
|
+
{ text: 'Twitter', url: 'https://twitter.com', target: '_blank' },
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
const socialResult = (await service.resolveInput(socialData, schema));
|
|
133
|
+
expect(socialResult.content.socialLinks).toHaveLength(2);
|
|
134
|
+
expect(socialResult.content.socialLinks[0]).toEqual({
|
|
135
|
+
text: 'Facebook',
|
|
136
|
+
url: 'https://facebook.com',
|
|
137
|
+
target: '_blank',
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
it.skip('should handle nested allOf structures with SquizLink arrays - COMPLEX EDGE CASE', async () => {
|
|
141
|
+
// NOTE: This represents a very complex edge case involving deeply nested allOf structures
|
|
142
|
+
// within arrays. The current fix handles single-level allOf perfectly but requires
|
|
143
|
+
// additional recursive data preservation logic for this advanced scenario.
|
|
144
|
+
//
|
|
145
|
+
// Future solution approach:
|
|
146
|
+
// 1. Implement recursive allOf detection in nested array items
|
|
147
|
+
// 2. Maintain pointer-based data preservation across multiple nesting levels
|
|
148
|
+
// 3. Handle JSON Schema library's recursive processing patterns
|
|
149
|
+
const schema = {
|
|
150
|
+
type: 'object',
|
|
151
|
+
properties: {
|
|
152
|
+
sections: {
|
|
153
|
+
type: 'array',
|
|
154
|
+
items: {
|
|
155
|
+
type: 'object',
|
|
156
|
+
properties: {
|
|
157
|
+
sectionType: { type: 'string', enum: ['content', 'media'] },
|
|
158
|
+
},
|
|
159
|
+
allOf: [
|
|
160
|
+
{
|
|
161
|
+
if: {
|
|
162
|
+
properties: { sectionType: { const: 'content' } },
|
|
163
|
+
},
|
|
164
|
+
then: {
|
|
165
|
+
properties: {
|
|
166
|
+
contentGroups: {
|
|
167
|
+
type: 'array',
|
|
168
|
+
items: {
|
|
169
|
+
type: 'object',
|
|
170
|
+
properties: {
|
|
171
|
+
groupType: { type: 'string', enum: ['links', 'text'] },
|
|
172
|
+
},
|
|
173
|
+
allOf: [
|
|
174
|
+
{
|
|
175
|
+
if: {
|
|
176
|
+
properties: { groupType: { const: 'links' } },
|
|
177
|
+
},
|
|
178
|
+
then: {
|
|
179
|
+
properties: {
|
|
180
|
+
groupLinks: {
|
|
181
|
+
type: 'array',
|
|
182
|
+
items: { type: 'SquizLink' },
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
const inputData = {
|
|
199
|
+
sections: [
|
|
200
|
+
{
|
|
201
|
+
sectionType: 'content',
|
|
202
|
+
contentGroups: [
|
|
203
|
+
{
|
|
204
|
+
groupType: 'links',
|
|
205
|
+
groupLinks: [
|
|
206
|
+
{ text: 'Nested Link 1', url: 'https://nested1.com', target: '_blank' },
|
|
207
|
+
{ text: 'Nested Link 2', url: 'https://nested2.com', target: '_self' },
|
|
208
|
+
],
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
};
|
|
214
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
215
|
+
expect(result.sections).toHaveLength(1);
|
|
216
|
+
expect(result.sections[0].contentGroups).toHaveLength(1);
|
|
217
|
+
expect(result.sections[0].contentGroups[0].groupLinks).toHaveLength(2);
|
|
218
|
+
expect(result.sections[0].contentGroups[0].groupLinks[0]).toEqual({
|
|
219
|
+
text: 'Nested Link 1',
|
|
220
|
+
url: 'https://nested1.com',
|
|
221
|
+
target: '_blank',
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
describe('SquizImage Arrays in AllOf Conditional Schemas', () => {
|
|
226
|
+
it('should preserve SquizImage arrays in allOf conditions', async () => {
|
|
227
|
+
const schema = {
|
|
228
|
+
type: 'object',
|
|
229
|
+
properties: {
|
|
230
|
+
content: {
|
|
231
|
+
type: 'object',
|
|
232
|
+
properties: {
|
|
233
|
+
displayType: { type: 'string', enum: ['text', 'gallery'] },
|
|
234
|
+
},
|
|
235
|
+
allOf: [
|
|
236
|
+
{
|
|
237
|
+
if: {
|
|
238
|
+
properties: { displayType: { const: 'gallery' } },
|
|
239
|
+
},
|
|
240
|
+
then: {
|
|
241
|
+
properties: {
|
|
242
|
+
images: {
|
|
243
|
+
type: 'array',
|
|
244
|
+
items: { type: 'SquizImage' },
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
],
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
const inputData = {
|
|
254
|
+
content: {
|
|
255
|
+
displayType: 'gallery',
|
|
256
|
+
images: [
|
|
257
|
+
{ name: 'hero-image.jpg', imageVariations: { small: '100x100', large: '800x600' } },
|
|
258
|
+
{ name: 'banner.png', imageVariations: { thumbnail: '50x50', full: '1200x400' } },
|
|
259
|
+
],
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
263
|
+
expect(result.content.images).toHaveLength(2);
|
|
264
|
+
expect(result.content.images[0]).toEqual({
|
|
265
|
+
name: 'hero-image.jpg',
|
|
266
|
+
imageVariations: { small: '100x100', large: '800x600' },
|
|
267
|
+
});
|
|
268
|
+
expect(result.content.images[1]).toEqual({
|
|
269
|
+
name: 'banner.png',
|
|
270
|
+
imageVariations: { thumbnail: '50x50', full: '1200x400' },
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
describe('Mixed SquizLink and SquizImage in AllOf', () => {
|
|
275
|
+
it('should preserve both SquizLink and SquizImage arrays in same allOf schema', async () => {
|
|
276
|
+
const schema = {
|
|
277
|
+
type: 'object',
|
|
278
|
+
properties: {
|
|
279
|
+
content: {
|
|
280
|
+
type: 'object',
|
|
281
|
+
properties: {
|
|
282
|
+
contentType: { type: 'string', enum: ['basic', 'rich'] },
|
|
283
|
+
},
|
|
284
|
+
allOf: [
|
|
285
|
+
{
|
|
286
|
+
if: {
|
|
287
|
+
properties: { contentType: { const: 'rich' } },
|
|
288
|
+
},
|
|
289
|
+
then: {
|
|
290
|
+
properties: {
|
|
291
|
+
links: {
|
|
292
|
+
type: 'array',
|
|
293
|
+
items: { type: 'SquizLink' },
|
|
294
|
+
},
|
|
295
|
+
images: {
|
|
296
|
+
type: 'array',
|
|
297
|
+
items: { type: 'SquizImage' },
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
],
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
const inputData = {
|
|
307
|
+
content: {
|
|
308
|
+
contentType: 'rich',
|
|
309
|
+
links: [{ text: 'Learn More', url: 'https://learn.com', target: '_blank' }],
|
|
310
|
+
images: [{ name: 'featured.jpg', imageVariations: { thumb: '150x150' } }],
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
314
|
+
// Verify SquizLink preservation
|
|
315
|
+
expect(result.content.links).toHaveLength(1);
|
|
316
|
+
expect(result.content.links[0]).toEqual({
|
|
317
|
+
text: 'Learn More',
|
|
318
|
+
url: 'https://learn.com',
|
|
319
|
+
target: '_blank',
|
|
320
|
+
});
|
|
321
|
+
// Verify SquizImage preservation
|
|
322
|
+
expect(result.content.images).toHaveLength(1);
|
|
323
|
+
expect(result.content.images[0]).toEqual({
|
|
324
|
+
name: 'featured.jpg',
|
|
325
|
+
imageVariations: { thumb: '150x150' },
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
describe('Edge Cases and Boundary Conditions', () => {
|
|
330
|
+
it('should handle empty SquizLink arrays in allOf', async () => {
|
|
331
|
+
const schema = {
|
|
332
|
+
type: 'object',
|
|
333
|
+
properties: {
|
|
334
|
+
content: {
|
|
335
|
+
type: 'object',
|
|
336
|
+
properties: {
|
|
337
|
+
hasLinks: { type: 'boolean' },
|
|
338
|
+
},
|
|
339
|
+
allOf: [
|
|
340
|
+
{
|
|
341
|
+
if: {
|
|
342
|
+
properties: { hasLinks: { const: true } },
|
|
343
|
+
},
|
|
344
|
+
then: {
|
|
345
|
+
properties: {
|
|
346
|
+
links: {
|
|
347
|
+
type: 'array',
|
|
348
|
+
items: { type: 'SquizLink' },
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
],
|
|
354
|
+
},
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
|
+
const inputData = {
|
|
358
|
+
content: {
|
|
359
|
+
hasLinks: true,
|
|
360
|
+
links: [],
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
364
|
+
expect(result.content.links).toBeDefined();
|
|
365
|
+
expect(result.content.links).toHaveLength(0);
|
|
366
|
+
expect(Array.isArray(result.content.links)).toBe(true);
|
|
367
|
+
});
|
|
368
|
+
it('should not interfere with non-allOf SquizLink arrays', async () => {
|
|
369
|
+
const schema = {
|
|
370
|
+
type: 'object',
|
|
371
|
+
properties: {
|
|
372
|
+
links: {
|
|
373
|
+
type: 'array',
|
|
374
|
+
items: { type: 'SquizLink' },
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
const inputData = {
|
|
379
|
+
links: [{ text: 'Regular Link', url: 'https://regular.com', target: '_self' }],
|
|
380
|
+
};
|
|
381
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
382
|
+
expect(result.links).toHaveLength(1);
|
|
383
|
+
expect(result.links[0]).toEqual({
|
|
384
|
+
text: 'Regular Link',
|
|
385
|
+
url: 'https://regular.com',
|
|
386
|
+
target: '_self',
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
it('should handle allOf without SquizLink/SquizImage arrays', async () => {
|
|
390
|
+
const schema = {
|
|
391
|
+
type: 'object',
|
|
392
|
+
properties: {
|
|
393
|
+
content: {
|
|
394
|
+
type: 'object',
|
|
395
|
+
properties: {
|
|
396
|
+
type: { type: 'string', enum: ['simple', 'complex'] },
|
|
397
|
+
},
|
|
398
|
+
allOf: [
|
|
399
|
+
{
|
|
400
|
+
if: {
|
|
401
|
+
properties: { type: { const: 'complex' } },
|
|
402
|
+
},
|
|
403
|
+
then: {
|
|
404
|
+
properties: {
|
|
405
|
+
title: { type: 'string' },
|
|
406
|
+
description: { type: 'string' },
|
|
407
|
+
},
|
|
408
|
+
},
|
|
409
|
+
},
|
|
410
|
+
],
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
};
|
|
414
|
+
const inputData = {
|
|
415
|
+
content: {
|
|
416
|
+
type: 'complex',
|
|
417
|
+
title: 'Test Title',
|
|
418
|
+
description: 'Test Description',
|
|
419
|
+
},
|
|
420
|
+
};
|
|
421
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
422
|
+
expect(result.content.type).toBe('complex');
|
|
423
|
+
expect(result.content.title).toBe('Test Title');
|
|
424
|
+
expect(result.content.description).toBe('Test Description');
|
|
425
|
+
});
|
|
426
|
+
it('should preserve SquizLink arrays when allOf condition does not match', async () => {
|
|
427
|
+
const schema = {
|
|
428
|
+
type: 'object',
|
|
429
|
+
properties: {
|
|
430
|
+
content: {
|
|
431
|
+
type: 'object',
|
|
432
|
+
properties: {
|
|
433
|
+
type: { type: 'string', enum: ['basic', 'advanced'] },
|
|
434
|
+
links: {
|
|
435
|
+
type: 'array',
|
|
436
|
+
items: { type: 'SquizLink' },
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
allOf: [
|
|
440
|
+
{
|
|
441
|
+
if: {
|
|
442
|
+
properties: { type: { const: 'advanced' } },
|
|
443
|
+
},
|
|
444
|
+
then: {
|
|
445
|
+
properties: {
|
|
446
|
+
extraData: { type: 'string' },
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
},
|
|
450
|
+
],
|
|
451
|
+
},
|
|
452
|
+
},
|
|
453
|
+
};
|
|
454
|
+
const inputData = {
|
|
455
|
+
content: {
|
|
456
|
+
type: 'basic', // Does not match 'advanced' condition
|
|
457
|
+
links: [{ text: 'Always Present', url: 'https://always.com', target: '_self' }],
|
|
458
|
+
},
|
|
459
|
+
};
|
|
460
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
461
|
+
expect(result.content.links).toHaveLength(1);
|
|
462
|
+
expect(result.content.links[0]).toEqual({
|
|
463
|
+
text: 'Always Present',
|
|
464
|
+
url: 'https://always.com',
|
|
465
|
+
target: '_self',
|
|
466
|
+
});
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
describe('Performance and Efficiency', () => {
|
|
470
|
+
it('should efficiently handle large SquizLink arrays in allOf', async () => {
|
|
471
|
+
const schema = {
|
|
472
|
+
type: 'object',
|
|
473
|
+
properties: {
|
|
474
|
+
content: {
|
|
475
|
+
type: 'object',
|
|
476
|
+
properties: {
|
|
477
|
+
enableMegaMenu: { type: 'boolean' },
|
|
478
|
+
},
|
|
479
|
+
allOf: [
|
|
480
|
+
{
|
|
481
|
+
if: {
|
|
482
|
+
properties: { enableMegaMenu: { const: true } },
|
|
483
|
+
},
|
|
484
|
+
then: {
|
|
485
|
+
properties: {
|
|
486
|
+
menuLinks: {
|
|
487
|
+
type: 'array',
|
|
488
|
+
items: { type: 'SquizLink' },
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
},
|
|
492
|
+
},
|
|
493
|
+
],
|
|
494
|
+
},
|
|
495
|
+
},
|
|
496
|
+
};
|
|
497
|
+
// Generate 50 SquizLink objects
|
|
498
|
+
const largeLinksArray = Array.from({ length: 50 }, (_, i) => ({
|
|
499
|
+
text: `Link ${i + 1}`,
|
|
500
|
+
url: `https://link${i + 1}.com`,
|
|
501
|
+
target: i % 2 === 0 ? '_self' : '_blank',
|
|
502
|
+
}));
|
|
503
|
+
const inputData = {
|
|
504
|
+
content: {
|
|
505
|
+
enableMegaMenu: true,
|
|
506
|
+
menuLinks: largeLinksArray,
|
|
507
|
+
},
|
|
508
|
+
};
|
|
509
|
+
const startTime = Date.now();
|
|
510
|
+
const result = (await service.resolveInput(inputData, schema));
|
|
511
|
+
const endTime = Date.now();
|
|
512
|
+
expect(result.content.menuLinks).toHaveLength(50);
|
|
513
|
+
expect(result.content.menuLinks[0]).toEqual({
|
|
514
|
+
text: 'Link 1',
|
|
515
|
+
url: 'https://link1.com',
|
|
516
|
+
target: '_self',
|
|
517
|
+
});
|
|
518
|
+
expect(result.content.menuLinks[49]).toEqual({
|
|
519
|
+
text: 'Link 50',
|
|
520
|
+
url: 'https://link50.com',
|
|
521
|
+
target: '_blank',
|
|
522
|
+
});
|
|
523
|
+
// Performance should be reasonable (under 100ms for 50 items)
|
|
524
|
+
expect(endTime - startTime).toBeLessThan(100);
|
|
525
|
+
});
|
|
526
|
+
});
|
|
527
|
+
});
|
|
528
|
+
//# sourceMappingURL=JsonSchemaService.allOf.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSchemaService.allOf.spec.js","sourceRoot":"","sources":["../src/JsonSchemaService.allOf.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,5 +34,25 @@ export declare class JSONSchemaService<P extends AnyPrimitiveType, R extends Any
|
|
|
34
34
|
* @returns the input object with all resolvable shapes resolved
|
|
35
35
|
*/
|
|
36
36
|
resolveInput(input: Input, inputSchema: JSONSchema, ctx?: ResolverContext): Promise<Input>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if the allOf schema contains arrays with primitive types (SquizLink/SquizImage)
|
|
39
|
+
* Used to determine if we need to apply data preservation
|
|
40
|
+
*/
|
|
41
|
+
private hasArraysWithPrimitiveTypes;
|
|
42
|
+
/**
|
|
43
|
+
* Check if a specific schema path should be protected from data corruption
|
|
44
|
+
* Only protects arrays of SquizLink/SquizImage types
|
|
45
|
+
*/
|
|
46
|
+
private isProtectedPrimitivePath;
|
|
47
|
+
/**
|
|
48
|
+
* Get value at a specific JSON pointer path from the data structure
|
|
49
|
+
* Used to preserve original data during schema traversal
|
|
50
|
+
*/
|
|
51
|
+
private getValueAtPointer;
|
|
52
|
+
/**
|
|
53
|
+
* Check if the value is already a resolved primitive type (SquizLink, SquizImage)
|
|
54
|
+
* and doesn't need further resolution
|
|
55
|
+
*/
|
|
56
|
+
private isAlreadyResolvedPrimitive;
|
|
37
57
|
}
|
|
38
58
|
export {};
|