or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

batch-operations.mderror-handling.mdgraphql-client.mdindex.mdraw-requests.mdstatic-functions.md
tile.json

static-functions.mddocs/

Static Request Functions

Simple functions for one-off GraphQL requests without maintaining client state. These functions are perfect for scripts and simple applications where you don't need persistent configuration or state management.

Capabilities

Request Function

The primary static function for sending GraphQL documents. Returns only the data from the response, throwing errors if the GraphQL request fails.

/**
 * Send a GraphQL document to a GraphQL server
 * @param url - GraphQL endpoint URL
 * @param document - GraphQL document (string or DocumentNode)
 * @param variables - Optional variables for the query
 * @param requestHeaders - Optional headers for the request
 * @returns Promise resolving to the response data
 */
function request<T, V extends Variables = Variables>(
  url: string,
  document: RequestDocument | TypedDocumentNode<T, V>,
  variables?: V,
  requestHeaders?: HeadersInit
): Promise<T>;

/**
 * Send a GraphQL document using an options object
 * @param options - Complete request configuration
 * @returns Promise resolving to the response data
 */
function request<T, V extends Variables = Variables>(
  options: RequestExtendedOptions<V, T>
): Promise<T>;

interface RequestExtendedOptions<V extends Variables = Variables, T = unknown> {
  url: string;
  document: RequestDocument | TypedDocumentNode<T, V>;
  requestHeaders?: HeadersInit;
  signal?: RequestInit["signal"];
  variables?: V;
}

Usage Examples:

import { gql, request } from "graphql-request";

// Simple query with no variables
const query = gql`
  {
    users {
      id
      name
    }
  }
`;

const data = await request("https://api.example.com/graphql", query);

// Query with variables
const queryWithVariables = gql`
  query GetUser($id: ID!) {
    user(id: $id) {
      id
      name
      email
    }
  }
`;

const userData = await request(
  "https://api.example.com/graphql",
  queryWithVariables,
  { id: "123" }
);

// Using options object
const result = await request({
  url: "https://api.example.com/graphql",
  document: query,
  requestHeaders: {
    authorization: "Bearer TOKEN",
  },
});

// Mutation example
const mutation = gql`
  mutation CreateUser($input: CreateUserInput!) {
    createUser(input: $input) {
      id
      name
    }
  }
`;

const newUser = await request(
  "https://api.example.com/graphql",
  mutation,
  {
    input: {
      name: "John Doe",
      email: "john@example.com",
    },
  }
);

GQL Template Tag

Convenience template tag for GraphQL documents that provides tooling support (syntax highlighting, formatting) without parsing overhead.

/**
 * Template tag for GraphQL documents providing tooling support
 * @param chunks - Template string parts
 * @param variables - Interpolated variables
 * @returns String with variables interpolated
 */
function gql(chunks: TemplateStringsArray, ...variables: unknown[]): string;

Usage Examples:

import { gql, request } from "graphql-request";

// Basic usage - provides syntax highlighting and formatting
const query = gql`
  query GetPosts($limit: Int!) {
    posts(limit: $limit) {
      id
      title
      content
      author {
        name
      }
    }
  }
`;

// Variable interpolation
const fieldName = "description";
const dynamicQuery = gql`
  {
    products {
      id
      name
      ${fieldName}
    }
  }
`;

await request("https://api.example.com/graphql", query, { limit: 10 });

Document Analysis

Utility function for analyzing GraphQL documents to extract operation information.

/**
 * Analyze a GraphQL document to extract metadata
 * @param document - GraphQL document to analyze
 * @param excludeOperationName - Skip operation name extraction for performance
 * @returns Document analysis result
 */
function analyzeDocument(
  document: RequestDocument,
  excludeOperationName?: boolean
): DocumentAnalysis;

interface DocumentAnalysis {
  expression: string;
  operationName: string | undefined;
  isMutation: boolean;
}

Usage Examples:

import { gql, analyzeDocument } from "graphql-request";

const mutation = gql`
  mutation CreatePost($title: String!) {
    createPost(input: { title: $title }) {
      id
      title
    }
  }
`;

const analysis = analyzeDocument(mutation);
console.log(analysis.operationName); // "CreatePost"
console.log(analysis.isMutation); // true

// Performance optimization - skip operation name extraction
const fastAnalysis = analyzeDocument(mutation, true);
console.log(fastAnalysis.operationName); // undefined

Supporting Types

type Variables = object;
type RequestDocument = string | DocumentNode;

type VariablesAndRequestHeadersArgs<V extends Variables> = V extends Record<any, never>
  ? [variables?: V, requestHeaders?: HeadersInit]
  : keyof RemoveIndex<V> extends never
    ? [variables?: V, requestHeaders?: HeadersInit]
    : [variables: V, requestHeaders?: HeadersInit];