GraphQL implementation in Lua
#lua #graphql #server #library

bjorn 8171413a8d Alias bugfix; vor 9 Jahren
README.md 09ecf824a3 Update README; vor 9 Jahren
parse.lua 8171413a8d Alias bugfix; vor 9 Jahren
schema.lua 7629d50681 Start on types and schema; vor 9 Jahren
types.lua 7629d50681 Start on types and schema; vor 9 Jahren
validate.lua 5bde5d085c Start validation; vor 9 Jahren

README.md

GraphQL Lua

Lua implementation of GraphQL parser using LPeg. Experimental.

Example

require 'parse' [[{
  me {
    firstName
    lastName
  }
}]]

Gives you this scary table:

{
  kind = "document",
  definitions = {
    {
      kind = "operation",
      operation = "query",
      selectionSet = {
        kind = "selectionSet",
        selections = {
          {
            kind = "field",
            name = {
              kind = "name",
              value = "me"
            },
            selectionSet = {
              kind = "selectionSet",
              selections = {
                {
                  kind = "field",
                  name = {
                    kind = "name",
                    value = "firstName"
                  }
                },
                {
                  kind = "field",
                  name = {
                    kind = "name",
                    value = "lastName"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Status

The parser can parse virtually all of the query syntax:

  • Documents
  • Definitions
    • OperationDefinition
    • FragmentDefinition
  • Selections
  • Fields
  • Aliases
  • Arguments
  • FragmentSpreads and InlineFragments
  • All value types (scalars, enums, lists, objects, variables).
  • VariableDefinitions (typed)
  • Directives

The type system supports scalars, objects, enums, interfaces, and unions. The built in scalars are also provided (ints, floats, strings, etc.).

License

MIT