graphql-js icon indicating copy to clipboard operation
graphql-js copied to clipboard

astFromValue fails with a custom scalar serializing to an object value

Open ardatan opened this issue 1 month ago • 5 comments

When you have a scalar with a serialize function that returns an object, it is not possible to convert it to AST. So it doesn't allow you to print a schema that has an input value with an object as a default value.

Reproduction -> https://github.com/graphql/graphql-js/pull/4086 Proposed fix -> https://github.com/graphql/graphql-js/pull/4087

const JSONScalar = new GraphQLScalarType({
  name: "JSON",
  serialize(value) {
    return value;
  },
});

const schema = new GraphQLSchema({
  types: [JSONScalar],
  query: new GraphQLObjectType({
    name: "Query",
    fields: {
      test: {
        type: GraphQLString,
        args: {
          i: {
            type: JSONScalar,
            defaultValue: { object: true },
          },
        },
      },
    },
  }),
});

ardatan avatar May 08 '24 14:05 ardatan