We have talked about it, a lot, but graphql can't express keys that they can, so things get quite complicated.
What about values? Not having to convert enums, dates etc would be feasible with transit, even with keeping keys as keywords.
That's a good point, we never explored that. I think we were focused on namespaced keys :)
My primary interest is more efficient serialization, as json is surprisingly often a bottleneck.
To generate or decode?
We used transit/json on both sides and then have a kind of net-data-to-domain-objects layer under it that deals with the namespaced keywords and stuff. Much faster than json serialization, but it's a little more code than I'd like
is there a parser for graphql syntax that produces expressions in venia (clojure data literal) syntax?
Lacinia parses GraphQL to a simple intermediate format (see the tests for details) and then transforms that into the executable form using a compiled schema. You may be able to leverage the Lacinia grammar and intermediate format.