From c079305e1a08f0475f82eefc29a07e9650d07ee0 Mon Sep 17 00:00:00 2001 From: Danny Povolotski Date: Sat, 3 Feb 2024 21:56:45 +0300 Subject: [PATCH] feat: discriminator --- schema.json | 26 +++++++++++++++++++++++++- src/test.ts | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/schema.json b/schema.json index d3b972c..1ad906e 100644 --- a/schema.json +++ b/schema.json @@ -132,7 +132,31 @@ "title": "specificationExtension" }, "JSONSchema": { - "$ref": "https://raw.githubusercontent.com/json-schema-tools/meta-schema/1.5.9/src/schema.json" + "allOf": [ + { + "$ref": "https://raw.githubusercontent.com/json-schema-tools/meta-schema/1.5.9/src/schema.json" + }, + { + "$ref": "#/definitions/discriminatorObject" + } + ] + }, + "discriminatorObject": { + "type": "object", + "required": [ + "propertyName" + ], + "properties": { + "propertyName": { + "type": "string" + }, + "mapping": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } }, "referenceObject": { "title": "referenceObject", diff --git a/src/test.ts b/src/test.ts index 599e951..7f55e83 100644 --- a/src/test.ts +++ b/src/test.ts @@ -20,7 +20,7 @@ describe("meta-schema", () => { const dereffed = await deref.resolve(); expect(dereffed).toBeTruthy(); expect(dereffed.definitions).not.toBeDefined(); - expect(dereffed.properties.methods.items.oneOf[0].properties.result.oneOf[0].properties.schema.title).toBe("JSONSchema"); + expect(dereffed.properties.methods.items.oneOf[0].properties.result.oneOf[0].properties.schema.allOf[0].title).toBe("JSONSchema"); expect(dereffed.properties.methods.items.oneOf[0].properties.result.oneOf[1].title).toBe("referenceObject"); }); });