Buble
Bringing GraphQL to the Edge with effortless lightness.
import { Buble } from 'buble'
import type { Context } from 'buble'
import {
GraphQLSchema,
GraphQLObjectType,
GraphQLString,
} from 'graphql'
const app = new Buble()
const helloworld: GraphQLSchema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: {
helloworld: {
type: GraphQLString,
resolve: (parent: any, args: any, ctx: Context, info: any) => {
return 'helloworld, Buble'
},
},
},
})
})
const clock: GraphQLSchema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: {
clock: {
type: GraphQLString,
resolve: (parent: any, args: any, ctx: Context, info: any) => {
return new Date().toISOString()
},
},
},
})
})
app.register({
schema: helloworld,
})
app.register({
schema: clock,
})
app.use(async (ctx: Context, next: Next) => {
const startedAt = new Date()
await next()
const endedAt = new Date()
ctx.res.headers.set('x-response-time', `${endedAt.getTime() - startedAt.getTime()}`)
})
export default app
examples