Closed
Description
Reporting issues with GraphQL.js
This issue is related to: #1815
Expected:
- Successfully convert arbitrary scalars (including default values) to ASTs
- Convert ASTs into dedicated values
Code:
const {
makeExecutableSchema,
} = require('graphql-tools')
const {
astFromValue,
valueFromAST,
isValidJSValue
} = require('graphql/utilities')
const {
GraphQLScalarType
} = require('graphql')
const JsonScalarType = new GraphQLScalarType({
name: 'JSON',
serialize: (value) => value,
});
const resolveFunctions = {
JSON: JsonScalarType
};
const typeDefs = `
scalar JSON
input Message {
extra: JSON
meta: JSON = {}
}
`
const schema = makeExecutableSchema({
typeDefs,
resolvers: resolveFunctions
})
const messageType = schema.getType('Message')
const value = {
extra: {
'key': 'andy',
"kafka.producer.batch": 0
}
}
// check if there's any error in our value
const errors = isValidJSValue(value, messageType)
// errors will contain detail errors if any
console.log(`Valid: ${errors.length==0}`)
// parse and get value
const ast = astFromValue(value, messageType)
const conf = valueFromAST(ast, messageType)
Result
$ npm start master ✱ ◼
> gql@1.0.0 start /Users/andy/Works/gql
> babel-node --presets es2015 run.js
Valid: true
/Users/andy/Works/gql/node_modules/graphql/utilities/astFromValue.js:130
throw _iteratorError;
^
TypeError: Cannot convert value to AST: { key: "andy", kafka.producer.batch: 0 }
at astFromValue (/Users/andy/Works/gql/node_modules/graphql/utilities/astFromValue.js:193:11)
at astFromValue (/Users/andy/Works/gql/node_modules/graphql/utilities/astFromValue.js:107:26)
Solution
I have to patch astFromValue
: https://github.com/graphql/graphql-js/blob/8aef229cb2/src/utilities/astFromValue.js#L139-L140 by adding following lines before L139
if (typeof serialized === 'object' ){
return {
kind: _kinds.Kind.OBJECT,
value: serialized
};
}
Question
The solution above may not be adequate. Would you please tell me it's worth to make a RP against this issue and how to properly resolve it?