1.0.2 • Public • Published

    SK GraphQL Query Builder

    An even simpler Javascript, ES5 friendly, GraphQL query builder

    No need for multiple functions, commands, or es5 compatible compiling. Just create a single Query with an options object and get a GraphQL ready query string in return.

    Forked from - a simple ES6 graphql query builder


    npm version License pull requests welcome GitHub stars

    If this was helpful, ★ it on github


    npm install sk-query-builder

    Query function:

    Query is available out of the box on the Window object, but can also be required to prevent namespace interference.

    var Query = require('sk-query-builder');


    Query can be called with a single arguement of either a single query object or an array of query objects and will return a GraphQL formatted string to be attached to query.

    var query = Query( query_obj[, options ] );

    Query Constructor:

    Single query object or an array of multiple queries to turn into a GQL query string.

    Key Value Argument Description
    func: String the name of the query function
    alias: String alias value that result will be returned under
    filters: Object An object mapping attribute to values
    value: String or Object Attribute name or nested query you want returned.
    Can be an array of multiple values with the values: key
    values: Array An Array of value items ( String or Obj ) to return multiple values
    Example: ( get the sum of users in given timeframe )
    var sumQuery = Query({
      func: "sum",
      alias: "total_sum",
      filters: { from: 0, to: 1501234567890 },
      value: "count"
    Output: ( returns formatted string )
    "{total_sum: sum(from: 0,to: 1501234567890){count}}"

    Additional Options:

    Key Value Argument Description
    prefix String prefix string before query obj ( i.e. "mutation" )
    var prefixQuery = Query({
      func: 'update',
      filters: { id: 1, value: 3 },
      value: [ "id", "value" ]
    }, { prefix: 'mutation' );
    console.log( prefixQuery );
    // "mutation{update(id:1,value:3){id,value}}"

    ## Enum Values: This library also creates an Enum function on the Window object that can be used to create enumeration values in the query string.


    Add Enum values inside query objects buy either the Enum() function with a string to represent the final value or by simply using any string starting with "e$"

    Enum( 'VALUE' ) == 'e$VALUE'

    Argument (one) Description
    String the name of the query function
    Example: ( get the sum of users in given timeframe )
    var eventQuery = Query({
      alias: 'event_123',
      func: 'event',
      filters: {
        frequency: Enum( 'DAILY' ), // can also be "e$DAILY"
        value: Enum( 'CLICKS' )
      values: [ 'timestamp', 'value' ]
    console.log( eventQuery );
    // "{event_123:event(frequency:DAILY,value:CLICKS){timestamp,value}}"


    Nested query values

    var FetchLeeAndSam = Query({
      alias: 'FetchLeeAndSam',
      func: 'users',
      values: [
          alias: 'lee',
          func: 'user',
          filters: { id: '1' },
          values: ['name', 'id' ]
          alias: 'sam',
          func: 'user',
          filters: { id: '2' },
          values: ['name', 'id' ]
    console.log( FetchLeeAndSam );

    Multiple query array with reusable values

    var reusable = function( model, year ) {
      return {
        alias: model,
        func: 'vehicle',
        filters: { year: year },
        values: [
    var CarCatalog = Query([
      reusable( 'Mustang', '1964' ),
      reusable( 'Camero', '1988' )
    console.log( CarCatalog );
    //"{Mustang:vehicle(year:"1964"){num_produced,horsepower} Camero:vehicle(year:"1988"){num_produced,horsepower}}"

    run Examples

    node example/simple.js


    npm i sk-query-builder

    DownloadsWeekly Downloads






    Last publish


    • sean6bucks