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
Classes
Interfaces
Type Aliases
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 stringawait 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 stringawait 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)
- @arethetypeswrong/cli
- @pothos/core
- @pothos/plugin-simple-objects
- @tsconfig/node18
- @tsconfig/strictest
- @types/body-parser
- @types/express
- @types/json-bigint
- @types/node
- @typescript-eslint/eslint-plugin
- @typescript-eslint/parser
- apollo-server-express
- body-parser
- doctoc
- dripip
- eslint
- eslint-config-prisma
- eslint-plugin-deprecation
- eslint-plugin-only-warn
- eslint-plugin-prefer-arrow
- eslint-plugin-simple-import-sort
- eslint-plugin-tsdoc
- eslint-typescript
- express
- get-port
- graphql
- graphql-scalars
- graphql-tag
- jsdom
- json-bigint
- publint
- tsx
- type-fest
- typescript
- typescript-eslint
- vitest
Peer Dependencies (4)
Badge
To add a badge like this oneto 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>
- Updated .
Package analyzed in 5732 ms. - Missing or incorrect documentation? Open an issue for this package.