graphql-request

  • Version 7.1.0
  • Published
  • 862 kB
  • 3 dependencies
  • MIT license

Install

npm i graphql-request
yarn add graphql-request
pnpm add graphql-request

Overview

Minimal GraphQL client supporting Node and browsers for scripts or simple apps.

Index

Functions

function analyzeDocument

analyzeDocument: (
document: RequestDocument,
excludeOperationName?: boolean
) => { expression: string; operationName: string | undefined; isMutation: boolean };

    function batchRequests

    batchRequests: BatchRequests;
    • Send a batch of GraphQL Document to the GraphQL server for execution.

      Example 1

      // You can pass a raw string
      await batchRequests('https://foo.bar/graphql', [
      {
      query: `
      {
      query {
      users
      }
      }`
      },
      {
      query: `
      {
      query {
      users
      }
      }`
      }])
      // You can also pass a GraphQL DocumentNode as query. Convenient if you
      // are using graphql-tag package.
      import gql from 'graphql-tag'
      await batchRequests('https://foo.bar/graphql', [{ query: gql`...` }])

    function gql

    gql: (chunks: TemplateStringsArray, ...variables: unknown[]) => string;
    • Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package.

      Remarks

      Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named "gql". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation.

      Example 1

      import { gql } from 'graphql-request'
      await request('https://foo.bar/graphql', gql`...`)

    function rawRequest

    rawRequest: RawRequest;
    • Send a GraphQL Query to the GraphQL server for execution.

    function request

    request: {
    <T, V extends object = object>(
    options: RequestExtendedOptions<V, T>
    ): Promise<T>;
    <T, V extends object = object>(
    url: string,
    document: any,
    ...variablesAndRequestHeaders: VariablesAndRequestHeadersArgs<V>
    ): Promise<T>;
    };
    • Send a GraphQL Document to the GraphQL server for execution.

      Example 1

      // You can pass a raw string
      await request('https://foo.bar/graphql', `
      {
      query {
      users
      }
      }
      `)
      // You can also pass a GraphQL DocumentNode. Convenient if you
      // are using graphql-tag package.
      import gql from 'graphql-tag'
      await request('https://foo.bar/graphql', gql`...`)
      // If you don't actually care about using DocumentNode but just
      // want the tooling support for gql template tag like IDE syntax
      // coloring and prettier autoformat then note you can use the
      // passthrough gql tag shipped with graphql-request to save a bit
      // of performance and not have to install another dep into your project.
      import { gql } from 'graphql-request'
      await request('https://foo.bar/graphql', gql`...`)

    Classes

    class ClientError

    class ClientError extends Error {}

      constructor

      constructor(
      response: GraphQLResponse<unknown>,
      request: GraphQLRequestContext<object>
      );

        property request

        request: GraphQLRequestContext<object>;

          property response

          response: GraphQLResponse<unknown>;

            class GraphQLClient

            class GraphQLClient {}
            • GraphQL Client.

            constructor

            constructor(url: string, requestConfig?: RequestConfig);

              property rawRequest

              rawRequest: RawRequestMethod;
              • Send a GraphQL query to the server.

              property requestConfig

              readonly requestConfig: RequestConfig;

                method batchRequests

                batchRequests: {
                <$BatchResult extends BatchResult, $Variables extends object = object>(
                documents: BatchRequestDocument<$Variables>[],
                requestHeaders?: HeadersInit
                ): Promise<$BatchResult>;
                <$BatchResult extends BatchResult, $Variables extends object = object>(
                options: BatchRequestsOptions<$Variables>
                ): Promise<$BatchResult>;
                };
                • Send GraphQL documents in batch to the server.

                method request

                request: {
                <T, V extends object = object>(
                document: any,
                ...variablesAndRequestHeaders: VariablesAndRequestHeadersArgs<V>
                ): Promise<T>;
                <T, V extends object = object>(options: RequestOptions<V, T>): Promise<T>;
                };
                • Send a GraphQL document to the server.

                method setEndpoint

                setEndpoint: (value: string) => this;
                • Change the client endpoint. All subsequent requests will send to this endpoint.

                method setHeader

                setHeader: (key: string, value: string) => this;
                • Attach a header to the client. All subsequent requests will have this header.

                method setHeaders

                setHeaders: (headers: HeadersInit) => this;

                  Interfaces

                  interface BatchRequestsExtendedOptions

                  interface BatchRequestsExtendedOptions<V extends Variables = Variables>
                  extends BatchRequestsOptions<V> {}

                    property url

                    url: string;

                      interface BatchRequestsOptions

                      interface BatchRequestsOptions<V extends Variables = Variables> {}

                        property documents

                        documents: BatchRequestDocument<V>[];

                          property requestHeaders

                          requestHeaders?: HeadersInit;

                            property signal

                            signal?: RequestInit['signal'];

                              interface GraphQLResponse

                              interface GraphQLResponse<T = unknown> {}

                                property data

                                data?: T;

                                  property errors

                                  errors?: GraphQLError[];

                                    property extensions

                                    extensions?: unknown;

                                      property status

                                      status: number;

                                        index signature

                                        [key: string]: unknown;

                                          Type Aliases

                                          type BatchRequestDocument

                                          type BatchRequestDocument<V extends Variables = Variables> = {
                                          document: RequestDocument;
                                          variables?: V;
                                          };

                                            type RawRequestOptions

                                            type RawRequestOptions<V extends Variables = Variables> = {
                                            query: string;
                                            requestHeaders?: HeadersInit;
                                            signal?: RequestInit['signal'];
                                            } & (V extends Record<any, never>
                                            ? { variables?: V }
                                            : keyof RemoveIndex<V> extends never
                                            ? { variables?: V }
                                            : { variables: V });

                                              type RequestDocument

                                              type RequestDocument = string | DocumentNode;

                                                type RequestExtendedOptions

                                                type RequestExtendedOptions<V extends Variables = Variables, T = unknown> = {
                                                url: string;
                                                } & RequestOptions<V, T>;

                                                  type RequestInitExtended

                                                  type RequestInitExtended<V extends Variables = Variables> = RequestInit & {
                                                  url: string;
                                                  operationName?: string;
                                                  variables?: V;
                                                  };

                                                    type RequestMiddleware

                                                    type RequestMiddleware<V extends Variables = Variables> = (
                                                    request: RequestInitExtended<V>
                                                    ) => RequestInitExtended | Promise<RequestInitExtended>;

                                                      type RequestOptions

                                                      type RequestOptions<V extends Variables = Variables, T = unknown> = {
                                                      document: RequestDocument | TypedDocumentNode<T, V>;
                                                      requestHeaders?: HeadersInit;
                                                      signal?: RequestInit['signal'];
                                                      } & (V extends Record<any, never>
                                                      ? { variables?: V }
                                                      : keyof RemoveIndex<V> extends never
                                                      ? { variables?: V }
                                                      : { variables: V });

                                                        type ResponseMiddleware

                                                        type ResponseMiddleware = (
                                                        response: GraphQLClientResponse<unknown> | ClientError | Error,
                                                        request: RequestInitExtended
                                                        ) => MaybePromise<void>;

                                                          type Variables

                                                          type Variables = object;

                                                            Package Files (9)

                                                            Dependencies (3)

                                                            Dev Dependencies (36)

                                                            Peer Dependencies (4)

                                                            Badge

                                                            To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                                            You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/graphql-request.

                                                            • Markdown
                                                              [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/graphql-request)
                                                            • HTML
                                                              <a href="https://www.jsdocs.io/package/graphql-request"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>