polen
Version:
A framework for delightful GraphQL developer portals
25 lines (21 loc) • 655 B
text/typescript
import { Grafaid } from '#lib/grafaid/index'
import { create } from '../codec.js'
export const GraphQLSchema = create({
name: `GraphQLSchema`,
transformer: {
isApplicable: (value: unknown) => value instanceof Grafaid.Schema.Schema,
serialize: value => {
const sdl = Grafaid.Schema.print(value)
if (sdl === ``) {
const astJson = JSON.stringify(Grafaid.Schema.AST.empty)
return astJson
}
const ast = Grafaid.Schema.AST.parse(sdl)
const astJson = JSON.stringify(ast)
return astJson
},
deserialize: astJson => {
return Grafaid.Schema.fromAST(JSON.parse(astJson))
},
},
})