Skip to content

Latest commit

 

History

History
101 lines (77 loc) · 2.66 KB

README.md

File metadata and controls

101 lines (77 loc) · 2.66 KB

Graphql for Deno

Is very tiny and simple graphql http server built on top of Deno http module using some GraphQL utilities.

My goal with this was to have a simple dedicated http server to run GraphQL, no router, midllewares or..., something else. Just your schema and a http server.

This is heavily on development so the design and some decisions can change, still in progress...

How to use

import graphqlHttp from 'https://raw.githubusercontent.com/TdfGomes/graphql4deno/master/mod.ts'

import { 
  GraphQLSchema,
  GraphQLObjectType,
  GraphQLString } from "https://cdn.pika.dev/graphql@^15.0.0";

const schema = new GraphQLSchema({
  query: new GraphQLObjectType({
    name: "Query",
    fields: {
      greeting: {
        type: GraphQLString,
        resolve: (_obj, _args, context) => {
          return "Hello world";
        },
      },
    },
  }),
});

graphqlHttp({ port: 8080 }, "/graphql", { schema });

You can also do like this:

import graphqlHttp from 'https://raw.githubusercontent.com/TdfGomes/graphql4deno/master/mod.ts'
import { makeExecutableSchema } from "https://raw.githubusercontent.com/TdfGomes/graphql4deno/master/deps.ts";

const schema = makeExecutableSchema({
  typeDefs: `
    type Query {
      greeting: String
    }
  `,
  resolvers: {
    Query: {
      greeting: () => "Hello World",
    },
  },
});

graphqlHttp({ port: 8080 }, "/graphql", { schema });

or even like this:

import graphqlHttp from 'https://raw.githubusercontent.com/TdfGomes/graphql4deno/master/mod.ts'
import gql from "https://raw.githubusercontent.com/davidmwhynot/graphql-tag-deno/master/mod.ts";

const schema = gql`
	type Query {
     greeting: String
  }
`;

const resolvers = {
  Query: {
    greeting: () => "Hello World",
  },
}

graphqlHttp({ port: 8080 }, "/graphql", { schema, resolvers });

To run this from the you will need to use the allow-net flag (e.g deno run --allow-net example)


TODO

  • Error Handling
  • Add tests !!!
  • CORS
  • Improve Typescript
  • Add Graphql Subscriptions
  • 🤔

For sure this list will be bigger. If you see a bug or wanted to see an extra feature here open an issue or a pull request. I will be more than happy to have help.


Thank you