Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.

ooflorent/graphql-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

graphql-parser

Experimental Facebook's GraphQL parser

This parser is inspired by Facebook's articles about GraphQL. It supports the latest shown syntax.

Install

npm install --save graphql-parser

Usage

graphql-parser exposes a tagged template function for parsing GraphQL queries. It outputs a function generating a JS object describing the query.

import graphql from 'graphql-parser' const IMAGE_WIDTH = 80 const IMAGE_HEIGHT = 80 // Compile a fragment const PostFragment = graphql`  {  id,  title,  published_at  } ` // Compile a query const UserQuery = graphql`  {  user(id: <id>) {  id,  nickname,  avatar(width: ${IMAGE_WIDTH}, height: ${IMAGE_HEIGHT}) {  url(protocol: "https")  },  posts(first: <count>) {  count,  edges {  node as post {  ${ PostFragment() }  }  }  }  }  } ` // Generate a GraphQL query const query = UserQuery({ id: 1337, count: 10, })

In the above example output will be:

{ "user": { "params": { "id": 1337 }, "fields": { "id": {}, "nickname": {}, "avatar": { "params": { "width": 80, "height": 80 }, "fields": { "url": { "params": { "protocol": "https" } } } }, "posts": { "params": { "first": 10 }, "fields": { "count": {}, "edges": { "fields": { "node": { "alias": "post", "fields": { "id": {}, "title": {}, "published_at": {} } } } } } } } } }

AST manipulation

graphql-parser also exposes lower level API for generating GraphQL AST and traversing it.

import { parse, traverse } from 'graphql-parser' // Parsing // ------- const ast = parse(`  {  post(slug: <slug>) {  id,  title,  image(width: 50, height: 50) as cover {  url  }  }  } `) // Traversal // --------- const ctx = { slug: "/graphql-is-hot" } const obj = traverse(ast, { // Lookup variables Variable(node) { return ctx[node.name] } })

About

Experimental Facebook's GraphQL parser

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •