cnn-cipher

A graphql query constructor.


Keywords
cnn, cnnlabs, hapi
License
MIT
Install
npm install cnn-cipher@0.2.0

Documentation

CNN Cipher

A module that builds graphql queries.

Why

Creating client side graphql queries can be awkward and cumbersome. This module aims to help developers construct queries in a format that is familiar - JSON.

Bower Installation

$ bower install cnn-cipher

Example: Browser

Download the script from dist and add it your public directory

<script src="your-public-root/cnn.ciper.min.js" async>

Invoke by passing in an object representing a query

Cipher.createGraphQLQuery({
    name: 'person',
    params: [
        {
            name: 'param1',
            value: 'value1'
        }
    ],
    fields: [
        {
            name: 'head', 
            values: [
                { 
                    name: 'eyes'
                }, 
                {
                    name: 'nose'
                }
            ]
        },
        {
            name: 'heart'
        },
        {
            name: 'leftHand',
            fragment: 'handFragment'
        }, 
        {
            name: 'rightHand',
            fragment: 'handFragment'
        }
    ],
    fragments: [ 
        { 
            name: 'fingerFragment', 
            on: 'finger',
            values: [
                { 
                    name: 'proximalPhalanx'
                },
                { 
                    name: 'intermediatePhalanx'
                },
                { 
                    name: 'distalPhalanx'
                },
                {
                   name: 'nail'
                }
            ]
        }, 
        { 
            name: 'handFragment', 
            on: 'hand', 
            values: [
                { 
                    name:'thumb'
                },
                { 
                    name:'indexFinger',
                    fragment: 'fingerFragment'
                }, 
                { 
                    name: 'middleFinger',
                    fragment: 'fingerFragment'
                },
                { 
                    name: 'ringFinger',
                    fragment: 'fingerFragment'
                },
                { 
                    name: 'pinkyFinger',
                    fragment: 'fingerFragment'
                },
            ]
        }
    ]
});

Returned value

"person(param1 :"value1"){head { eyes,nose },heart,leftHand { ...handFragment },rightHand { ...handFragment }} fragment fingerFragment on finger { proximalPhalanx,intermediatePhalanx,distalPhalanx,nail } , fragment handFragment on hand { thumb,indexFinger { ...fingerFragment },middleFinger { ...fingerFragment },ringFinger { ...fingerFragment },pinkyFinger { ...fingerFragment } } "

Contributing

Please read CONTRIBUTING.md.

License

The code and the documentation are released under the LICENSE.md.