From 0ff89950529971707636a87d1cf65b6e87e8f444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ro=C5=BCek?= Date: Thu, 8 Apr 2021 01:15:56 +0200 Subject: [PATCH 1/2] fix: use items validation for flattened arrays --- src/__tests__/__snapshots__/index.spec.tsx.snap | 12 ++++++++++-- src/tree/utils/walk.ts | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/__tests__/__snapshots__/index.spec.tsx.snap b/src/__tests__/__snapshots__/index.spec.tsx.snap index e172b4be..ea9458c4 100644 --- a/src/__tests__/__snapshots__/index.spec.tsx.snap +++ b/src/__tests__/__snapshots__/index.spec.tsx.snap @@ -2658,7 +2658,11 @@ exports[`HTML Output should match tickets.schema.json 1`] = `
availableDeliveryTypes
array[string] -
+ + +
+1
+
+
@@ -2669,7 +2673,11 @@ exports[`HTML Output should match tickets.schema.json 1`] = `
ticketRecipients
array[string] -
+ + +
+1
+
+
diff --git a/src/tree/utils/walk.ts b/src/tree/utils/walk.ts index c1a80cb0..4eb067c5 100644 --- a/src/tree/utils/walk.ts +++ b/src/tree/utils/walk.ts @@ -49,10 +49,24 @@ export function* processNode(node: JSONSchema4): IterableIterator { yield combinerNode; } } else if (type) { + const primaryType = getPrimaryType(node); + let validationNOde: JSONSchema4 = node; + if ( + primaryType === SchemaKind.Array && + _isObject(node.items) && + !Array.isArray(node.items) && + getCombiners(node.items) === void 0 + ) { + const validationNodePrimaryType = getPrimaryType(node.items); + if (validationNodePrimaryType !== SchemaKind.Array && validationNodePrimaryType !== SchemaKind.Object) { + validationNOde = node.items; + } + } + const base: IBaseNode = { id: generateId(), type: flattenTypes(type), - validations: getValidations(node), + validations: getValidations(validationNOde), annotations: getAnnotations(node), ...('required' in node && { required: normalizeRequired(node.required) }), enum: node.enum, From 28048bbe9e2f4a36b8559542d1cae4bf4a908daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ro=C5=BCek?= Date: Thu, 8 Apr 2021 23:45:53 +0200 Subject: [PATCH 2/2] style: const name --- src/tree/utils/walk.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tree/utils/walk.ts b/src/tree/utils/walk.ts index 4eb067c5..5e17369c 100644 --- a/src/tree/utils/walk.ts +++ b/src/tree/utils/walk.ts @@ -50,7 +50,7 @@ export function* processNode(node: JSONSchema4): IterableIterator { } } else if (type) { const primaryType = getPrimaryType(node); - let validationNOde: JSONSchema4 = node; + let validationNode: JSONSchema4 = node; if ( primaryType === SchemaKind.Array && _isObject(node.items) && @@ -59,14 +59,14 @@ export function* processNode(node: JSONSchema4): IterableIterator { ) { const validationNodePrimaryType = getPrimaryType(node.items); if (validationNodePrimaryType !== SchemaKind.Array && validationNodePrimaryType !== SchemaKind.Object) { - validationNOde = node.items; + validationNode = node.items; } } const base: IBaseNode = { id: generateId(), type: flattenTypes(type), - validations: getValidations(validationNOde), + validations: getValidations(validationNode), annotations: getAnnotations(node), ...('required' in node && { required: normalizeRequired(node.required) }), enum: node.enum,