Skip to content

A Javascript Parser for Facebook's GraphQL. NO LONGER MAINTAINED - USE graphql-js

License

Notifications You must be signed in to change notification settings

madjam002/graphqlite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A Javascript Parser for Facebook's GraphQL. NO LONGER MAINTAINED - USE graphql-js

Resources

License

Stars

Watchers

Forks

Packages

No packages published