fastify/fast-json-stringify

oneOf/anyOf doesn't seem to work with objects

Offen

#290 geöffnet am 06.03.2021

 (18 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)JavaScript (211 Forks)github user discovery
buggood first issue

Repository-Metriken

Stars
 (3.700 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 8T 13h) (6 gemergte PRs in 30 T)

Beschreibung

🐛 Bug Report

oneOf/anyOf doesn't seem to work with objects.

To Reproduce

The following schema models a union type, i.e. in TypeScript terms:

type Foo = { foo: string, baz: string };
type Bar = { bar: string, baz: string };
type FooBar = Foo | Bar;
const fastJson = require("fast-json-stringify");

const schemaFoo = {
  properties: {
    foo: { type: "string" },
    baz: { type: "string" },
  },
  required: ["foo", "baz"],
};

const schemaBar = {
  properties: {
    bar: { type: "string" },
    baz: { type: "string" },
  },
  required: ["bar", "baz"],
};

const stringify = fastJson({
  type: "object",
  anyOf: [schemaFoo, schemaBar],
});

console.log(stringify({ foo: "foo", baz: "baz" }));
console.log(stringify({ bar: "bar", baz: "baz" }));

Output:

{}
{}

Expected behavior

Since both objects match the schema, both should be stringified.

Your Environment

  • node version: v14.16.0
  • fastify version: 3.13.0
  • fast-json-stringify: 2.4.2
  • os: Ubuntu 18.04

Contributor Guide