From f93da21979a370a53c8bad593ab82fbc1e027dd8 Mon Sep 17 00:00:00 2001 From: slowbackspace Date: Thu, 16 Mar 2023 23:59:19 +0100 Subject: [PATCH] fix: recursively transform schema with array 'type' field --- src/functions/schema.ts | 7 +-- .../get-schema-for-endpoint.test.ts.snap | 60 +++++++------------ 2 files changed, 23 insertions(+), 44 deletions(-) diff --git a/src/functions/schema.ts b/src/functions/schema.ts index 333a69be..361d434b 100644 --- a/src/functions/schema.ts +++ b/src/functions/schema.ts @@ -71,11 +71,12 @@ export const transformSchemaElement = (schema: any) => { )}. Type doesn't support an array with multiple values. Use anyOf/oneOf.`, ); } - return { + + return transformSchemaElement({ ...schema, type: schema.type.filter((a: string) => a !== 'null')[0], nullable: true, - }; + }); } else { // edge case where type is an array with only 1 element if (schema.type.length === 1) { @@ -177,8 +178,6 @@ export const getSchemaForEndpoint = (endpointName: string) => { anyOfResult['anyOf'].push(item); } - console.log('anyOfResult', endpointName, anyOfResult); - responses.response[200] = anyOfResult; } diff --git a/test/tests/__snapshots__/get-schema-for-endpoint.test.ts.snap b/test/tests/__snapshots__/get-schema-for-endpoint.test.ts.snap index 236de6bb..81ea84bc 100644 --- a/test/tests/__snapshots__/get-schema-for-endpoint.test.ts.snap +++ b/test/tests/__snapshots__/get-schema-for-endpoint.test.ts.snap @@ -4359,10 +4359,8 @@ Testnet: https://github.com/input-output-hk/metadata-registry-testnet/ "description": "Number of decimal places of the asset unit", "example": 6, "maximum": 255, - "type": [ - "integer", - "null", - ], + "nullable": true, + "type": "integer", }, "description": { "description": "Asset description", @@ -4372,10 +4370,8 @@ Testnet: https://github.com/input-output-hk/metadata-registry-testnet/ "logo": { "description": "Base64 encoded logo of the asset", "example": "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", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, "name": { "description": "Asset name", @@ -4384,18 +4380,14 @@ Testnet: https://github.com/input-output-hk/metadata-registry-testnet/ }, "ticker": { "example": "nutc", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, "url": { "description": "Asset website", "example": "https://www.stakenuts.com/", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, }, "required": [ @@ -19461,50 +19453,38 @@ relative to the start of the network "description": { "description": "Description of the stake pool", "example": "The best pool ever", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, "hash": { "description": "Hash of the metadata file", "example": "47c0c68cb57f4a5b4a87bad896fc274678e7aea98e200fa14a1cb40c0cab1d8c", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, "homepage": { "description": "Home page of the stake pool", "example": "https://stakentus.com/", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, "name": { "description": "Name of the stake pool", "example": "Stake Nuts", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, "ticker": { "description": "Ticker of the stake pool", "example": "NUTS", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, "url": { "description": "URL to the stake pool metadata", "example": "https://stakenuts.com/mainnet.json", - "type": [ - "string", - "null", - ], + "nullable": true, + "type": "string", }, }, "required": [