graphql-query-utils
TypeScript icon, indicating that this package has built-in type declarations

0.0.1 • Public • Published

GraphQL Query Utilities

A node.js module with utilities for GraphQL queries:

  • Complexity cost calculation for query resolvers
    • maximum of 100(%) complexity
    • complexity can be assign per object and per resolver
    • multiplies complexity of the resolver per item when querying "per_page" on a list
  • Arguments definition for query list of objects
    • page, per_page

Installation

npm install graphql-query-utils

yarn add graphql-query-utils

Usage

Resolver complexity cost calculation

import { resolveCost } from 'graphql-query-cost'

/**
* complexity is assigned per object
* it has a maximum of 100(%) of complexity budget
*/
const complexity = 1

new GraphQLSchema({
    query: new GraphQLObjectType({
        name: 'Query',
        fields: () => ({
            user: {
                type: UserType,
                resolve: resolveCost((source: any, args: any) => {
                    return { name: 'User 1' }
                }, complexity)
            },
        }),
    }),
})

Arguments for list of types

import { ListArguments, IListArgumentsType, resolveCost } from 'graphql-query-cost'

const complexity = 1

new GraphQLSchema({
    query: new GraphQLObjectType({
        name: 'Query',
        fields: () => ({
            users: {
                type: new GraphQLList(UserType),
                args: { ...ListArguments },
                resolve: resolveCost((source: any, args: any) => {
                    console.log('page ', args.page)
                    console.log('per page ', args.per_page)
                    
                    return [ { name: 'User 2' }, { name: 'User 3' } ]
                }, complexity)
            }
        }),
    }),
})

/graphql-query-utils/

    Package Sidebar

    Install

    npm i graphql-query-utils

    Weekly Downloads

    0

    Version

    0.0.1

    License

    ISC

    Unpacked Size

    97.4 kB

    Total Files

    23

    Last publish

    Collaborators

    • jj-lucas
    • marcodaniels
    • briandemant