Skip to content
A Javascript Parser for Facebook's GraphQL. NO LONGER MAINTAINED - USE graphql-js
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
__tests__
lib
.gitignore
LICENSE
README.md
grammar.pegjs
index.js
package.json

README.md

GraphQLite NPM Downloads

GraphQLite is a Javascript Parser for Facebook's GraphQL.

(see http://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html)

Installation

$ npm install graphqlite

Usage

GraphQLite exposes a simple API for parsing GraphQL (example uses ES6 multi-line strings).

var graphql = require('graphqlite')

var output = graphql.parse(`
  node(id: 123) {
    id,
    name,
    birthdate {
      month,
      day,
    },
    friends(first: 1) {
      cursor,
      edges {
        node {
          name
        }
      }
    }
  }

  filter(name: "test string parameter") {

  }
`)

var backToString = graphql.stringify(output)
var pretty = graphql.stringify(output, true)

In the above example, output will be:

[{
  "type": "node",
  "params": {
    "id": 123
  },
  "fields": {
    "id": true,
    "name": true,
    "birthdate": {
      "fields": {
        "month": true,
        "day": true
      }
    },
    "friends": {
      "params": {
        "first": 1
      },
      "fields": {
        "cursor": true,
        "edges": {
          "fields": {
            "node": {
              "fields": {
                "name": true
              }
            }
          }
        }
      }
    }
  }
}, {
  "type": "filter",
  "params": {
    "name": "test string parameter"
  }
}]

stringify takes the output from parse and generates a GraphQL string. If no second parameter is provided, the output will be minified. If the second parameter is true, the output will be prettified.

ES6 Templates

GraphQLite can also be used with ES6 template strings, like follows:

var graphql = require('graphqlite')

var EventQuery = graphql`
  Event {
    name,
    location
  }
`

var UserQuery = graphql`
  User {
    name,
    profilePic
  }
`

var FinalQuery = graphql`
  Viewer {
    endpoint,
    feed(first: <first>) {
      id
    },

    ${EventQuery},
    ${UserQuery}
  }
`

This allows queries to be composed. FinalQuery in the above example will be a composed GraphQL string.

Roadmap

Facebook will be releasing a GraphQL module in the future, but I didn't know what to expect from this so I created this basic one as an experiment. Therefore this module could become obsolete in the future.

License

Licensed under the MIT License.

View the full license here.

You can’t perform that action at this time.