Lua implementation of GraphQL.
- 
Using luvit
lit install bjornbytes/graphql - 
Using luarocks
luarocks install graphql 
local parse = require 'graphql.parse'
local schema = require 'graphql.schema'
local types = require 'graphql.types'
local validate = require 'graphql.validate'
local execute = require 'graphql.execute'
-- Parse a query
local ast = parse [[
query getUser($id: ID) {
  person(id: $id) {
    firstName
    lastName
  }
}
]]
-- Create a type
local Person = types.object {
  name = 'Person',
  fields = {
    id = types.id.nonNull,
    firstName = types.string.nonNull,
    middleName = types.string,
    lastName = types.string.nonNull,
    age = types.int.nonNull
  }
}
-- Create a schema
local schema = schema.create {
  query = types.object {
    name = 'Query',
    fields = {
      person = {
        kind = Person,
        arguments = {
          id = types.id
        },
        resolve = function(rootValue, arguments)
          if arguments.id ~= 1 then return nil end
          return {
            id = 1,
            firstName = 'Bob',
            lastName = 'Ross',
            age = 52
          }
        end
      }
    }
  }
}
-- Validate a parsed query against a schema
validate(schema, ast)
-- Execution
local rootValue = {}
local variables = { id = 1 }
local operationName = 'getUser'
execute(schema, ast, rootValue, variables, operationName)
--[[
{
  person = {
    firstName = 'Bob',
    lastName = 'Ross'
  }
}
]]-  Parsing
- Improve error messages
 
 - Type system
 - Introspection
 - Validation
 -  Execution
- Asynchronous execution (coroutines)
 
 - Example server
 
lua tests/runner.luaMIT