<commit_before>GraphQL Servers in OCaml
-----------------------------------------------

![Build Status](https://travis-ci.org/andreas/ocaml-graphql-server.svg?branch=master)

This repo contains a library for creating GraphQL servers in OCaml. Note that the API is still under active development.

Current feature set:

- [x] Type-safe schema design
- [x] GraphQL parser in pure OCaml using [angstrom](https://github.com/inhabitedtype/angstrom) (April 2016 RFC draft)
- [x] Query execution
- [x] Introspection of schemas
- [x] Arguments for fields
- [x] Allows variables in queries
- [x] Lwt support
- [x] Async support
- [x] Example with HTTP server and GraphiQL

## Documentation

Four OPAM packages are provided:

- `graphql` provides the core functionality and is IO-agnostic. It provides a functor `Graphql.Schema.Make(IO)` to instantiate with your own IO monad.
- `graphql-lwt` provides the module `Graphql_lwt.Schema` with [Lwt](https://github.com/ocsigen/lwt) support in field resolvers.
- `graphql-async` provides the module `Graphql_async.Schema` with [Async](https://github.com/janestreet/async) support in field resolvers.
- graphql_parser` provides query parsing functionality.

API documentation:

- [`graphql`](https://andreas.github.io/ocaml-graphql-server/graphql)
- [`graphql-lwt`](https://andreas.github.io/ocaml-graphql-server/graphql-lwt)
- [`graphql-async`](https://andreas.github.io/ocaml-graphql-server/graphql-async)
- [`graphql_parser`](https://andreas.github.io/ocaml-graphql-server/graphql_parser)<commit_msg>README: Markdown formatting [ci skip]<commit_after>GraphQL Servers in OCaml
-----------------------------------------------

![Build Status](https://travis-ci.org/andreas/ocaml-graphql-server.svg?branch=master)

This repo contains a library for creating GraphQL servers in OCaml. Note that the API is still under active development.

Current feature set:

- [x] Type-safe schema design
- [x] GraphQL parser in pure OCaml using [angstrom](https://github.com/inhabitedtype/angstrom) (April 2016 RFC draft)
- [x] Query execution
- [x] Introspection of schemas
- [x] Arguments for fields
- [x] Allows variables in queries
- [x] Lwt support
- [x] Async support
- [x] Example with HTTP server and GraphiQL

## Documentation

Four OPAM packages are provided:

- `graphql` provides the core functionality and is IO-agnostic. It provides a functor `Graphql.Schema.Make(IO)` to instantiate with your own IO monad.
- `graphql-lwt` provides the module `Graphql_lwt.Schema` with [Lwt](https://github.com/ocsigen/lwt) support in field resolvers.
- `graphql-async` provides the module `Graphql_async.Schema` with [Async](https://github.com/janestreet/async) support in field resolvers.
- `graphql_parser` provides query parsing functionality.

API documentation:

- [`graphql`](https://andreas.github.io/ocaml-graphql-server/graphql)
- [`graphql-lwt`](https://andreas.github.io/ocaml-graphql-server/graphql-lwt)
- [`graphql-async`](https://andreas.github.io/ocaml-graphql-server/graphql-async)
- [`graphql_parser`](https://andreas.github.io/ocaml-graphql-server/graphql_parser)
{'fraction_non_alphanumeric': 0.1516618263956115, 'fraction_numerical': 0.0025814778960955146, 'mean_word_length': 4.140961857379768, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 16, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5762418', 'n_tokens_mistral': 1009, 'n_tokens_neox': 978, 'n_words': 269}