@jumpn/utils-graphql

GraphQL utilities

Usage no npm install needed!

<script type="module">
  import jumpnUtilsGraphql from 'https://cdn.skypack.dev/@jumpn/utils-graphql';
</script>

README

@jumpn/utils-graphql

GraphQL utilities

Installation

Using npm

$ npm install --save @jumpn/utils-graphql

Using yarn

$ yarn add @jumpn/utils-graphql

Types

export type {DocumentNode} from "graphql/language/ast";

type GqlErrorLocation = {|
  line: number,
  column: number
|};

type GqlError = {|
  message: string,
  locations?: Array<GqlErrorLocation>
|};

type GqlRequest<Variables: void | Object = void> = {|
  operation: string,
  variables?: Variables
|};

type GqlRequestCompat<Variables: void | Object = void> = {|
  query: string,
  variables?: Variables
|};

type GqlResponse<Data> = {|
  data?: Data,
  errors?: Array<GqlError>
|};

type GqlOperationType = "mutation" | "query" | "subscription";

API

errorsToString

Transforms an array of GqlError into a string.

Parameters

  • gqlErrors Array<GqlError>

Examples

const gqlRespose = {
  errors: [
    {message: "First Error", locations: [{column: 10, line: 2}]},
    {message: "Second Error", locations: [{column: 2, line: 4}]}
  ]
}

const error = errorsToString(gqlRespose.errors);
// string with the following:
// First Error (2:10)
// Second Error (4:2)

Returns string

getOperationType

Returns the type (query, mutation, or subscription) of the given operation

Parameters

Examples

const operation = `
  subscription userSubscription($userId: ID!) {
    user(userId: $userId) {
      id
      name
    }
  }
`;

const operationType = getOperationType(operation);

console.log(operationType); // "subscription"

Returns GqlOperationType

hasSubscription

Returns true if documentNode has a subscription or false otherwise

Parameters

  • documentNode DocumentNode

Returns boolean

requestFromCompat

Creates a GqlRequest using given GqlRequestCompat

Parameters

  • gqlRequestCompat GqlRequestCompat<Variables>
    • gqlRequestCompat.query
    • gqlRequestCompat.variables

Examples

const query = `
  query userQuery($userId: ID!) {
    user(userId: $userId) {
      id
      email
    }
  }
`;

console.log(requestFromCompat({query, variables: {userId: 10}}));
// {operation: "...", variables: {userId: 10}}

Returns GqlRequest<Variables>

requestToCompat

Creates a GqlRequest using given GqlRequestCompat

Parameters

  • gqlRequest GqlRequest<Variables>
    • gqlRequest.operation
    • gqlRequest.variables

Examples

const operation = `
  query userQuery($userId: ID!) {
    user(userId: $userId) {
      id
      email
    }
  }
`;

console.log(requestToCompat({operation, variables: {userId: 10}}));
// {query: "...", variables: {userId: 10}}

Returns GqlRequestCompat<Variables>

License

MIT :copyright: Jumpn Limited